J'essaie de remplacer le système par défaut. ToggleButton
apparence. Voici le XML qui définit le ToggleButton
:
<ToggleButton android:id="@+id/FollowAndCenterButton"
android:layout_width="30px"
android:layout_height="30px"
android:textOn="" android:textOff="" android:layout_alignParentLeft="true"
android:layout_marginLeft="5px"
android:layout_marginTop="5px" android:background="@drawable/locate_me"/>
Maintenant, nous avons deux icônes de 30 x 30 que nous voulons utiliser pour les états cliqué/non cliqué. Actuellement, nous disposons d'un code qui modifie de manière programmatique l'icône d'arrière-plan en fonction de l'état :
centeredOnLocation.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (centeredOnLocation.isChecked()) {
centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on));
} else {
centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me));
}
}
});
Je cherche évidemment une meilleure façon de procéder. J'ai essayé de créer un sélecteur pour l'image d'arrière-plan, qui passerait automatiquement d'un état à l'autre :
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/locate_me" /> <!-- default -->
<item android:state_checked="true"
android:drawable="@drawable/locate_me_on" /> <!-- pressed -->
<item android:state_checked="false"
android:drawable="@drawable/locate_me" /> <!-- unchecked -->
Mais cela ne fonctionne pas ; la lecture de la ToggleButton
API ( http://developer.Android.com/reference/Android/widget/ToggleButton.html ), il apparaît que les seuls attributs xml hérités sont
XML Attributes
Attribute Name Related Method Description
android:disabledAlpha The alpha to apply to the indicator when disabled.
android:textOff The text for the button when it is not checked.
android:textOn The text for the button when it is checked.
Il ne semble pas y avoir l'attribut Android:state_checked, bien que la classe possède la méthode isChecked()
y setChecked()
.
Existe-t-il un moyen de faire ce que je veux en XML ou dois-je me contenter de ma solution de rechange désordonnée ?