Android: Spécifiez deux images différentes pour le bouton à bascule à l’aide de XML

J’essaie de remplacer l’apparence ToggleButton par défaut. Voici le XML qui définit le ToggleButton :

  

Maintenant, nous avons deux icons de 30 x 30 que nous voulons utiliser pour les états cliqués / non-cliqués. En ce moment, nous avons du code qui modifie par programme 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)); } } }); 

De toute évidence, je cherche une meilleure façon de le faire. J’ai essayé de créer un sélecteur pour l’image de fond, qui basculerait automatiquement entre les états:

         

Mais cela ne fonctionne pas; En lisant l’API ToggleButton ( http://developer.android.com/reference/android/widget/ToggleButton.html ), il apparaît que les seuls atsortingbuts xml hérités sont

  XML Atsortingbutes Atsortingbute 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 d’atsortingbut android: state_checked, bien que la classe ayant la méthode isChecked() et setChecked() .

Y at-il un moyen de faire ce que je veux en XML, ou suis-je coincé avec ma solution de contournement?

Votre code est correct. Cependant, le bouton à bascule affichera le premier élément de votre sélecteur correspondant à celui-ci, de sorte que la valeur par défaut devrait être la dernière. Disposez les articles de la manière suivante pour vous assurer qu’ils seront tous utilisés:

   //currently pressed turning the toggle on  //currently pressed turning the toggle off  //not pressed default checked state  //default non-pressed non-checked