Lord Yu Posté(e) 27 janvier 2011 Share Posté(e) 27 janvier 2011 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 More sharing options...
Naskel Posté(e) 28 janvier 2011 Share Posté(e) 28 janvier 2011 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 More sharing options...
Lord Yu Posté(e) 28 janvier 2011 Auteur Share Posté(e) 28 janvier 2011 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 More sharing options...
Alocaly Posté(e) 29 janvier 2011 Share Posté(e) 29 janvier 2011 Il doit y avoir plus d'info dans le log cat sur l'erreur. Remarque : tu parles d'un fichier stylebutton, et tu references un buttonstyle... C'est une faute de recopie ? Emmanuel / Alocaly Lien vers le commentaire Partager sur d’autres sites More sharing options...
Elth Posté(e) 1 février 2011 Share Posté(e) 1 février 2011 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 More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.