Benutzerdefinierte überprüfbare Ansicht, die auf Selector reagiert
Ich habe eine Gruppe vonFrameLayout
was ich überprüfen / auswählen möchte,
Das heißt, nach einem Klick möchte ich dieFrameLayout
anzeigen alschecked
- Bei erneutem Drücken möchte ich, dass es un wirdchecked
. Darüber hinaus möchte ich, dass diese visuelle Warteschlange durch die Verwendung von a wie gewohnt beschrieben wird<selector>
.
Ich scheine nicht in der Lage zu sein, dies zum Laufen zu bringen - ich bin mir nicht sicher, was ich vermisse:
public class CheckableFrameLayout extends FrameLayout implements Checkable {
private boolean mChecked = false;
public CheckableFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setChecked(boolean checked) {
mChecked = checked;
refreshDrawableState();
}
public boolean isChecked() {
return mChecked;
}
public void toggle() {
setChecked(!mChecked);
}
}
Das Layout derCheckableFrameLayout
:
<com.test.view.CheckableFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/selector_horizontal"
android:clickable="true" >
Der Selektor, der es unterstützt (selector_horizontal.xml):
<item android:drawable="@drawable/selector_vertical_selected" android:state_pressed="false" android:state_checked="true"/>
<item android:drawable="@drawable/selector_vertical_pressed" android:state_pressed="true" android:state_checked="false"/>
<item android:drawable="@drawable/selector_vertical_normal" android:state_pressed="false" android:state_checked="false"/>
Mit dem obigen Code funktioniert "state_pressed" einwandfrei, aber die Ansicht selbst wird nicht überprüft (nicht dieCheckable
Code, der als durch Debug entdeckt bezeichnet wird).