ToggleButton
eredita da TextView
modo da poter impostare drawable da visualizzare ai 4 bordi del testo.È possibile utilizzare che per visualizzare l'icona desiderata sulla parte superiore del testo e nascondere il testo effettivo
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@android:drawable/ic_menu_info_details"
android:gravity="center"
android:textOff=""
android:textOn=""
android:textSize="0dp" />
Il risultato rispetto al normale ToggleButton
sembra
L'opzione secondi è quella di utilizzare un ImageSpan
per sostituire effettivamente il testo con un'immagine. Sembra leggermente migliore poiché l'icona è nella posizione corretta ma non può essere eseguita direttamente con il layout xml.
si crea una pianura ToggleButton
<ToggleButton
android:id="@+id/toggleButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false" />
Quindi impostare il "testo" programmatially
ToggleButton button = (ToggleButton) findViewById(R.id.toggleButton3);
ImageSpan imageSpan = new ImageSpan(this, android.R.drawable.ic_menu_info_details);
SpannableString content = new SpannableString("X");
content.setSpan(imageSpan, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
button.setText(content);
button.setTextOn(content);
button.setTextOff(content);
Il risultato qui in mezzo - icona viene posizionata leggermente più basso dal momento che prende il posto del testo .
Ci AFAIK non è un modo semplice per sostituire il testo con un'immagine oltre a scambiare l'intera immagine di sfondo a 2 stati con quella desiderata. Potresti provare se puoi impostare il testo come immagine tramite [ImageSpan] (http://developer.android.com/reference/android/text/style/ImageSpan.html) come in http://stackoverflow.com/ domande/7616437/imagespan-in-a-widget – zapl