2013-10-16 3 views
1

J'ai un ImageButton et je veux faire en sorte que l'arrière-plan du bouton change de couleur lorsque le bouton est enfoncé. J'ai copié le fichier button_bg.xml de la question this.android.view.InflateException Ligne de fichier XML binaire # 54

button_bg.xml ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#ffff0000"/> <!-- pressed --> 
    <item android:state_focused="true" 
      android:color="#ff0000ff"/> <!-- focused --> 
    <item android:color="#ff000000"/> <!-- default --> 
</selector> 

Et la ligne # 54 se présente comme suit:

<ImageButton 
    android:id="@+id/sendButton" 
    android:background="@drawable/button_bg" 
    android:src="@drawable/ic_action_send_now" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="4dp" 
    android:layout_alignParentRight="true" /> 

J'ai essayé d'enlever la ligne:

android:background="@drawable/button_bg" 

qui arrête la application s'écraser mais les boutons ne changent pas de couleur.

Toute aide serait appréciée

+0

duplication possible de [android.view.InflateException: ligne de fichier XML binaire # 39: erreur de classe de gonflement] (http://stackoverflow.com/questions/17347293/android-view-inflateexception-binary-xml-file-line -39-error-inflating-class) – Codeman

+0

Sur quelle version d'Android testez-vous cette option? Je soupçonne que le problème est dans le 'android: src', plutôt que le' android: background'. – Codeman

+0

Essayez d'ajouter Drawable x = getResources(). GetDrawable (R.drawable.button_bg "); à votre méthode Activity # onCreate() avant l'appel setContentView() .Si cela fonctionne, votre drawable est OK. un meilleur message d'erreur dans logcat –

Répondre

0

Par Changning button_bg.xml à ce qui suit:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/clr_pressed"/> <!-- pressed --> 
    <item android:state_focused="true" 
      android:drawable="@android:color/transparent"/> <!-- focused --> 
    <item android:drawable="@android:color/transparent"/> <!-- default --> 
</selector> 

et en ajoutant ce qui suit à strings.xml

<drawable name="clr_normal">#AAAAAA</drawable> 
<drawable name="clr_pressed">#777777</drawable> 

le problème a été résolu et la le code a fonctionné comme prévu.

+0

Cela fonctionne, mais pouvez-vous expliquer le raison – TENNO

+0

J'avais essayé d'assigner à un attribut de couleur quand ce que la bonne chose à faire était de l'assigner à l'attribut d'arrière-plan. – PriestVallon

Questions connexes