Es gibt ein paar Möglichkeiten, dies zu tun:
Erstens können Sie einfach eine ImageButton
verwenden und manuell sein Image ziehbar auf Klick in Java schalten. Dies ist, was die stock Music player auf Android does for the 'shuffle' button, zum Beispiel. Obwohl Sie im aktivierten Zustand des Schaltflächenhintergrunds keine Kontrolle über den Hintergrund der Schaltfläche haben, können Sie das Bild austauschen, was aus Sicht der Konsistenz der Android-Benutzeroberfläche von Vorteil sein kann.
Eine andere Option ist die Verwendung eines komplexen Satzes von Zeichen- und Neun-Patches, um ein Bild innerhalb eines ToggleButton
zu erhalten, mit der Option, den Hintergrund und/oder die Bildressource beim Umschalten zu ändern. Das ist die Option, die ich unten zeigen werde. Aber denken Sie daran, seien Sie vorsichtig bei der UI-Konsistenz, bevor Sie dies tun.
res/layout/foo.xml
...
<ToggleButton
android:textOn="" android:textOff=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shuffle_button" />
...
res/ziehbare/shuffle_button.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- use "@android:drawable/btn_default" to keep consistent with system -->
<item android:drawable="@drawable/toggle_button_background" />
<item android:drawable="@drawable/shuffle_button_image" />
</layer-list>
res/ziehbare/toggle_button_background.xml
res/ziehbar/shuffle_button_image.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_mp_shuffle_on_btn" android:state_checked="true" />
<item android:drawable="@drawable/ic_mp_shuffle_off_btn" />
</selector>
Bilddateien
btn_default_<state>.9.png
kann in frameworks/base.git unter core/res/res/drawable-hdpi und core/res/res/drawable-mdpi (auch LDPI) gefunden werden. WARNUNG: Wenn Sie diese verwenden, wird Ihre App auf Geräten mit angepassten Betriebssystem-UIs (d. H. HTC Sense UI) inkonsistent aussehen.
ic_mp_shuffle_<state>_btn.9.png
müssen neun-Patches sein, so dass das Bild zentriert und nicht gedehnt wird, um die Schaltfläche anzupassen. Dies sind beispielsweise hdpi
Versionen des Symbols:
res/drawable- (h | m | LDPI)/ic_mp_shuffle_ (on | off) _btn.9.png
ic_mp_shuffle_on_btn.9.png http://nikonizer.yfrog.com/Himg404/scaled.php?tn=0&server=404&filename=icmpshuffleonbtn9.png&xsize=640&ysize=640ic_mp_shuffle_off_btn.9.png http://nikonizer.yfrog.com/Himg708/scaled.php?tn=0&server=708&filename=icmpshuffleoffbtn9.png&xsize=640&ysize=640
Abschließender Hinweis: Erinnern Sie sich mit dem System UI konsistent zu sein, wenn möglich, und darauf achten, dass Ihre App auf Geräten mit angepassten Versionen des Betriebssystems ausgeführt werden kann Diese haben unterschiedliche Grafiken für UI-Elemente wie Buttons. Ein Beispiel dafür ist HTC Sense, die grüne Tasten anstelle der grau/orange/gelben auf Lager Android hat. Wenn Sie also die btn_default_...
PNG-Dateien aus dem Open-Source-Repository kopieren, um einen umschaltbaren Schaltflächenhintergrund zu erstellen, werden Sie die Konsistenz auf diesen Geräten beeinträchtigen.
Sind Sie sicher, dass Sie keinen 'ToggleButton' anstelle eines' ImageButton' möchten? – CommonsWare
Mit der Umschalttaste konnte ich die Taste nicht gedrückt halten. Ich müsste manuell benutzerdefinierte Symbole für jede Schaltfläche erstellen. Ich möchte nur, dass das Hintergrundbild das gepresste ist. – GuyNoir