Aller au contenu

Changement de style d'un bouton à l'appuie: InflateException


Lord Yu

Recommended Posts

Bonjour à tous,

Je tente de changer le style d'un de mes boutons lorsque l'utilisateur appuie dessus (uniquement un changement de couleur du background). Pour se faire j'ai créé dans mon dossier drawable-hdpi un fichier xml stylebutton.xml contenant le code suivant:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true" android:background="#2a2410" />
   <item android:state_presse="true" android:background="#2a2413"/>
</selector>

Mon fichier main.xml définissant mon interface contient le bouton suivant:

<Button android:layout_width="fill_parent"
				android:layout_weight="1" android:layout_height="fill_parent"
				android:id="@+id/myButton" android:text="text"
				android:layout_margin="3dp" android:textColor="#c2920c"
				android:textStyle="bold" android:background="@drawable/buttonstyle" />

Le logcat me sort une InflateException pointant sur la ligne de mon bouton.

Je ne vois pas du tout comment faire là, si quelqu'un pouvait me sortir de ce pétrin.

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Il y a peut être un rapport avec le fait que tu as placé ton stylebutton.xml dans drawable-hdpi et pas dans un dossier color à moins que tu veux donner une couleur particulière en fonction de la résolution de l'écran (ce qui peut être une bonne méthode pour gérer les dégradés à voir)

ce qui transforme ton code en :

<Button android:layout_width="fill_parent"
                                       android:layout_weight="1" android:layout_height="fill_parent"
                                       android:id="@+id/myButton" android:text="text"
                                       android:layout_margin="3dp" android:textColor="#c2920c"
                                       android:textStyle="bold" android:background="@color/buttonstyle" />

Seconde anomalie :

Je suis pas sur que cette état existe et tu as déjà géré l'état android:state_pressed :

 <item android:state_presse

Voila.

Cordialement,

Lien vers le commentaire
Partager sur d’autres sites

Salut,

En effet, je me suis raté quelque part sur le state_pressed. Je vérifierais ce soir si c'est une erreur lorsque j'ai recopié mon code (j'ai retouché un peu ce que je montre ici pour simplifier donc c'est pas impossible), ou si j'ai vraiment cette horrible erreur dans mon code (et comment j'aurais pu la rater?).

Je vous tiens donc au courant :)

Le fait qu'il soit dans le dossier drawable n'est pas gainant je pense, j'ai déjà utilisé une méthode similaire (quoi que là dans l'attribut background il y avait un "@drawable/...") avec succès.

Merci Naskel ;)

edit:

Voilà le code sans erreur de copie:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true" android:background="#2a2410" />
   <item android:state_pressed="false" android:background="#2a2413"/>
</selector>

Je verrais ce soir en mettant tout ça dans un dossier color.

Lien vers le commentaire
Partager sur d’autres sites

J'ai regardé rapidement donc je suis ptet à côté de la plaque^^ Mais pourquoi pas quelque chose dans ce style là :

	tonBouton.setOnTouchListener(new OnTouchListener() {
		@Override
		public boolean onTouch(View v, MotionEvent event) {
			// TODO Auto-generated method stub
			final int action = event.getAction();

			switch (action) {
			case MotionEvent.ACTION_DOWN:
				System.out.println("Action down");
				v.setBackgroundResource(R.drawable.tonBoutonAppuye);
				break;
			case MotionEvent.ACTION_UP:
				System.out.println("Action up");
				v.setBackgroundResource(R.drawable.tonBoutonRelache);
				break;
			}

			return false;
		}
	});

En espérant que ça t'ai aidé un minimum... ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...