Cómo agregar un estado de botón personalizado
lt;resourcesgt;
lt;declare-styleable?name="comida" gt;
lt;attr?name="state_fried"?format="boolean"?/gt;
lt;attr?name="state_baked"?format="boolean" ?/gt;
lt;/declare-styleablegt;
lt;/resourcesgt;
public?FoodButton(Context?context,?AttributeSet?attrs) ?{
super(context,?attrs);
}
privado?static?final?int[]?STATE_FRIED?=?{R.attr .state_fried};
privado?static?final?int[]?STATE_BAKED?=?{R.attr.state_baked};
privado?boolean?mIsFried?=?false;
privado?boolean?mIsBaked?=?false;
público?void?setFried(boolean?isFried)?{mIsFried?=?isFried;}
public?void?setBaked(boolean?isBaked)?{mIsBaked?=?isBaked;}
¿Entonces?override?function?"onCreateDrawableState":
@Override
protected?int[]?onCreateDrawableState(int?extraSpace)?{
final?int[]?drawableState?=?super.onCreateDrawableState(extraSpace? ?2);
if?(mIsFried)?{
mergeDrawableStates(drawableState,?STATE_FRIED);
}
if?(mIsBaked)?{
mergeDrawableStates(drawableState,?STATE_BAKED);
}
return?drawableState;
}
Archivo?"res/drawable/ food_button.xml":
lt;?xml?version="1.0"?encoding="utf-8"?gt;
lt;selector?xmlns:android="/ apk/res/android"
xmlns: app="/apk/res/com.mydomain.mypackage"gt;
lt; item
aplicación: state_baked="verdadero"
>aplicación:state_fried="false"
android:drawable="@drawable/item_baked"?/gt;
lt;item
aplicación:state_baked= "falso"
aplicación:state_fried="true"
android: drawable="@drawable/item_fried"?/gt;
lt;item p>
aplicación: state_baked="true"
aplicación: state_fried="true"
android: drawable="@drawable/item_overcooked"?/gt;
lt; elemento
aplicación: state_baked="false"
aplicación: state_fried="false"
android: drawable="@drawable/ item_raw"?/gt;
lt;/selectorgt;