Visualização verificável personalizada que responde ao seletor
Eu tenho um grupo deFrameLayout
que eu quero ser verificável / selecionável,
Ou seja, depois de um clique, eu gostaria que oFrameLayout
para exibir comochecked
- quando pressionado novamente, eu gostaria que ele se tornassechecked
. Além do mais, eu quero que este visual seja descrito como de costume através do uso de um<selector>
.
Eu não consigo fazer isso funcionar - não tenho certeza do que estou perdendo:
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);
}
}
O layout doCheckableFrameLayout
:
<com.test.view.CheckableFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/selector_horizontal"
android:clickable="true" >
O seletor que o suporta (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"/>
Usando o código acima, o "state_pressed" está funcionando bem, mas a Visualização em si não está sendo verificada (não é oCheckable
código sendo chamado como descoberto através de depuração).