2015-04-28 10 views
7

Sto creando un semplice pulsante di commutazione in Android e impostando lo sfondo come un disegno.Rimozione del padding dal pulsante di commutazione in Android

<ToggleButton 
    android:layout_width="wrap_content" 
    android:drawablePadding="0dp" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textSize="12sp" 
    android:padding="0dp" 
    android:id="@+id/tag_text" 
    android:background="@drawable/toggle_selector"/> 

toggle_selector.xml assomiglia a questo:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/toggle_button_off" android:state_checked="false"/> 
    <item android:drawable="@drawable/toggle_button_on" android:state_checked="true"/> 
</selector> 

toggle_button_off e toggle_button_on hanno semplice drawable forma con un certo colore.

E questo è come sto gonfiare questo pulsante di commutazione nel mio punto di vista:

View child = getLayoutInflater().inflate(R.layout.tags, null); 
     ToggleButton tag = ((ToggleButton)child.findViewById(R.id.tag_text)); 
     tag.setText("Testing"); 
     tag.setTextOff("Testing"); 
     tag.setTextOn("Testing"); 
     flowlayout.addView(child); 

Il problema è che non c'è solo troppo imbottitura intorno al testo nel pulsante di commutazione e io non sono in grado di sbarazzarsi di esso impostando padding = "0dp". Il testo su questi pulsanti viene aggiunto dinamicamente in modo che l'impostazione di un peso di altezza costante non sia di aiuto.

enter image description here

+0

cosa vuoi dire con troppa imbottitura? Che dire cambiare la dimensione del testo? – Opiatefuchs

+0

padding tra il testo e il limite del pulsante togglebutton. Voglio che il pulsante avvolga il testo. –

+0

che è l'altezza e la larghezza predefinite se si desidera eseguire il wrap, quindi è necessario rendere i drawable dell'immagine o dare altezza o larghezza –

risposta

21

ho avuto la soluzione impostando minWidth, MinHeight a 0DP. Avvolgere il contenuto in larghezza e altezza. E poi aggiungendo il padding personalizzato a togglebutton che voglio.

<ToggleButton 
    android:layout_width="wrap_content" 
    android:minWidth="0dp" 
    android:minHeight="0dp" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textSize="12sp" 
    android:padding="2dp" 
    android:id="@+id/tag_text" 
    android:background="@drawable/toggle_selector"/> 
+0

Purtroppo non funziona per me. Ho impostato in modo programmatico quei valori e ToggleButton aggiunge ancora quel grande padding. Android 5.0.1 –

+1

L'unico modo in cui ho trovato di rimuovere il padding è di impostare a livello di codice il valore MINHeight AND the minimumHeight a 0 (non è possibile impostare il valore minimumHeight nel layout xml): toggleButton.setMinHeight (0); toggleButton.setMinimumHeight (0); Idem per la larghezza – Bubu

1

Uso CheckedTextView invece:

final CheckedTextView toggle = new CheckedTextView(clipboardWordsLayout.getContext()); 
toggle.setText(kanji); 
final int min = Views.dp2px(48, clipboardWordsLayout.getContext()); 
toggle.setMinimumWidth(min); 
toggle.setMinimumHeight(min); 
toggle.setGravity(Gravity.CENTER); 
toggle.setBackgroundResource(R.drawable.togglebutton); 
toggle.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     toggle.setChecked(!toggle.isChecked()); 
    } 
});