Problème avec selector

Résolu
Bonjour,

J'ai un tout petit problème. J'ai créé une animation de bouton grâce à un fichier XML contenant un
selector
. Ci-dessous le code.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/bouton_off" />
<item android:state_pressed="true" android:drawable="@drawable/bouton_on" />
<item android:state_focused="true" android:drawable="@drawable/bouton_off" />
<item android:state_enabled="true" android:drawable="@drawable/bouton_off" />
</selector>


L'animation fonctionne mais pourtant mon fichier est souligné en rouge dans Android Studio. Le message d'erreur est :
Selector XML file should be in either "animator" or "drawable", not "anim". Element selector must be declared.
. Je ne comprends pas le problème.

3 réponses

  1. Modérateur
    Un selector n'est pas une animation à proprement parlé. C'est un object qui permet de décrire les différents états d'un composant graphique, bouton notamment, utilisable comme un Drawable.
    D'après le message, tu l'utilises comme ceci:
    R.anim.selector
    . Il faut l'utiliser comme ceci:
    R.drawable.selector 

    1. Merci. En fait je n'utilise pas java pour contrôler l'état du bouton. Tout se fait par xml.

      Voici le code du bouton dans le layout :
      <Button
      android:id="@+id/startActivity_boutonInscription"
      android:background="@anim/bouton"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_margin="3dp"
      android:padding="3dp"
      android:gravity="center"
      android:text="@string/startActivity_boutonInscriptionSTRING"
      android:textColor="@color/texte_bouton" />


      Le code java dans l'activité qui permet le passage d'une vue à l'autre :
      final Button startActivity_boutonInscription = (Button) findViewById(R.id.startActivity_boutonInscription);
      startActivity_boutonInscription.setOnClickListener(new View.OnClickListener()
      {
      @Override
      public void onClick(View v)
      {
      Intent lien_Start_InscriptionImperative = new Intent(Start.this, InscriptionImperative.class);
      startActivity(lien_Start_InscriptionImperative);
      }
      });


      Et le code du fichier xml qui contrôle l'animation et qui se trouve dans le dossier "anim" :
      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item
      android:state_window_focused="false"
      android:state_enabled="true"
      android:drawable="@drawable/bouton_off" />
      <item
      android:state_pressed="true"
      android:drawable="@drawable/bouton_on" />
      <item
      android:state_focused="true"
      android:drawable="@drawable/bouton_off" />
      <item
      android:state_enabled="true"
      android:drawable="@drawable/bouton_off" />
      </selector>