que tienen un grupo de FrameLayout
la que yo quiero ser comprobable/seleccionable,personalizada comprobable Ver que responde al selector
Es decir, después de un clic que le gustaría que el FrameLayout
para mostrar como checked
- cuando se pulsa de nuevo lo haría me gusta convertirse en un checked
. Lo que es más, quiero que este visual que se describa como de costumbre a través del uso de un <selector>
.
Me parece que no puede conseguir este trabajo - no estoy seguro de lo que me falta:
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);
}
}
El diseño de la CheckableFrameLayout
:
<com.test.view.CheckableFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/selector_horizontal"
android:clickable="true" >
El selector de respaldo que (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"/>
Utilizando el código por encima de la "state_pressed" está trabajando muy bien, pero la Vista en sí misma no se está verificando (no se llama al código Checkable
como descubierto a través de la depuración).
'onCreateDrawableState' no se llama desde LinearLayout por algún motivo. ¿Alguna idea de por qué? –
si alguien quiere obtener una solución completa, consulte este repositorio: https://github.com/shamanland/AndroidLayoutSelector, se puede hacer clic/verificable '' 'LinearLayout''' como' '' ToggleButton''' –