Ausgewählte Zustand für den ImageButton
Ich habe Schaltfläche Bild wie unten.
<ImageButton
android:id="@+id/imagebutton"
android:layout_width="250dp"
android:layout_height="100dp"
android:background="@drawable/perm_group_calendar"/>
perm_group_calendar.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/perm_group_calendar_selected" />
<item android:drawable="@drawable/perm_group_calendar_normal" />
</selector>
Den ausgewählten Status funktioniert nicht von selbst. Ich fand die Antwort von diesem SO
Android ImageButton mit einem ausgewählten Staat?
Benutzte ich den folgenden code. jetzt funktioniert es.
imageButton.setOnClickListener(new OnClickListener() {
public void onClick(View button) {
if (button.isSelected()){
button.setSelected(false);
//...Handle toggle off
} else {
button.setSelected(true);
//...Handled toggle on
}
}
});
Warum müssen Wir Umschalten des ausgewählten Status aus ?
- Sie müssten eine
ToggleButton
für, die, mit derchecked
Eigenschaft. - imageButton.setImageDrawable(getContext().getResources().getDrawable(R. drawable.perm_group_calendar)); versuchen Sie, diese
- Auch wenn ich die setImageDrawable in meinem code habe ich die ausgewählten Zustand von mir mit der oncliklistener, nur dann funktioniert es.
- ja, Sie legen den drawable wie diese, und der rest bleibt gleich. In Ihrem Klick-listener auf die Schaltfläche.setSelected(!- Taste.isSelected());
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil die ausgewählt Zustand, nicht automatisch angezeigt, indem ein ImageButton-Steuerelement, die - in der Regel (im Gegensatz zu künstlich) - zeigt nur die normalen und gedrückt Status (nicht sicher über die konzentriert Zustand, aber es sollte).
Könnte man sonst mit einem benutzerdefinierte ToggleButton (oder einen Schalter oder eine CheckBox).
Trotzdem, deine Lösung sieht nicht schlecht, zu mir.
ich denke, Sie sollten tun, was einige als die folgende in der drawable XML-Datei :
und Ihre ImageButton-Steuerelement, wie im folgenden :
sollten Sie die android -: state_pressed="true" , und das sollte den trick tun für den gedrückten Zustand .
als RomianGuy erwähnt in diesem Antwort :
state_selected wird verwendet, wenn ein Element ausgewählt ist, unter Verwendung einer Tastatur/dpad/trackball/etc .
also ich denke, das ist, warum Sie wechseln den Zustand .
Hoffe, Das Hilft .