Пользовательский проверяемый вид, который отвечает на селектор
У меня есть группаFrameLayout
который я хочу чтобы можно было проверить / выбрать,
То есть после клика мне бы хотелосьFrameLayout
отображать какchecked
- при повторном нажатии я бы хотел, чтобыchecked
, Более того, я хочу, чтобы эта визуальная очередь описывалась как обычно посредством использования<selector>
.
Кажется, я не могу заставить это работать - я не уверен, что мне не хватает:
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);
}
}
МакетCheckableFrameLayout
:
<com.test.view.CheckableFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/selector_horizontal"
android:clickable="true" >
Селектор, поддерживающий его (selector_horizont.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"/>
Используя приведенный выше код & quot; state_pressed & quot; работает нормально, но само представление не проверяется (неCheckable
код, вызываемый как обнаруженный с помощью отладки).