Benutzerdefinierte Überprüfbar Ansicht, die eine Antwort auf Selector

Habe ich eine Gruppe von FrameLayout was ich will aktivierbar/auswählbar,

Dass ist nach ein Sie auf ich möchte die FrameLayout Anzeige checked - wenn gedrückt, würde ich wieder wie es sich un -checked. Was mehr ist, ich will das visual que beschrieben werden wie gewohnt durch, obwohl die Verwendung einer <selector>.

Ich kann nicht scheinen, um diese arbeiten - ich bin mir nicht sicher, was ich vermisst:

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 der CheckableFrameLayout:

<com.test.view.CheckableFrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/selector_horizontal"
    android:clickable="true" >

Den Selektor sichern (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 das "state_pressed" ist in Ordnung, aber die Ansicht selbst wird nicht immer überprüft (nicht die Checkable code aufgerufen wird, wie entdeckt, durch Debuggen).

InformationsquelleAutor Graeme | 2012-07-02
Schreibe einen Kommentar