Wenn ich einen ImageButton mit einem Selektor als Hintergrund verwendet habe, gibt es einen Status, den ich ändern kann, wodurch sich sein Erscheinungsbild ändert? Im Moment kann ich es dazu bringen, Bilder zu ändern, wenn es gedrückt wird, aber es scheint keinen "hervorgehobenen" oder "ausgewählten" oder ähnlichen Zustand zu geben, der es mir ermöglicht, sein Erscheinungsbild nach Belieben umzuschalten.
Hier ist mein XML; es ändert nur das Aussehen, wenn es gedrückt wird.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/map_toolbar_details_selected" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/map_toolbar_details_selected" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/map_toolbar_details_selected" />
<item android:drawable="@drawable/map_toolbar_details" />
android
button
imagebutton
Joren
quelle
quelle
Antworten:
Das funktioniert bei mir:
Und dann in Java:
Für einen reibungslosen Übergang können Sie auch die Animationszeit angeben:
quelle
NOTE: order is important (the first matching state(s) is what is rendered
Das hat funktioniert, aber seltsam, ich habe nicht verstanden, warum?android:state_selected="false"
die Standardbestellung angeben!ToggleImageButton
welches dieCheckable
Schnittstelle implementiertOnCheckedChangeListener
und einandroid:checked
XML-Attribut unterstützt:res / values / attrs.xml:
quelle
state_checked
nicht funktioniert, Sie müssen jedoch verwendenstate_selected
.Der beste Weg, dies ohne weitere Bilder zu tun:
quelle
Erstellen Sie eine XML-Datei in einem
res/drawable
Ordner. Zum Beispiel "btn_image.xml":Sie können die gewünschten Dateien kombinieren, indem Sie beispielsweise "bg_state_1" in "bg_state_deselected" und "bg_state_2" in "bg_state_selected" ändern.
In jede dieser Dateien können Sie Folgendes schreiben:
Erstellen Sie in einer Layoutdatei eine ImageView oder einen ImageButton mit den folgenden Attributen:
Später im Code:
quelle
Versuche dies:
Auch für Farben hatte ich Erfolg mit
quelle
quelle