XML dessiné composé de png et de superposition

J'ai un bouton png, qui est activé, non pressé. Lorsque l'utilisateur clique sur le bouton, je veux seulement assombrir le png. J'ai besoin de quelque chose comme ça:

<selector xmlns:android="http://schemas.android.com/apk/res/android" > //normal button with background my_button.png <item android:state_enabled="true" android:drawable="@drawable/my_button" //my_button.png /> //pressed button with background my_button.png overlayed by 50% black <item android:state_pressed="true" android:state_enabled="true" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <bitmap android:src="@drawable/my_button"/> <color android:color="#00000088"/> </RelativeLayout> </item> </selector> 

Existe-t-il une façon de faire cela? Ou dois-je avoir un autre fichier png?

  • Google Analytics V2 SDK pour Android EasyTracker donnant des erreurs
  • Formatage du temps sur Android, en suivant les préférences (horloge 24 heures par rapport à AM / PM, etc.)
  • Nom de l'application Android apparaît comme nom d'activité
  • OnCreate () n'est pas appelé par getWritableDatabase ()
  • Cordova: Comment configurer le fichier config.xml spécifique à la plate-forme qui n'est pas écrasé après la construction de cordova?
  • Comment faire surfaceview transparent
  • Android In App Subscription renvoie toujours le reçu initial, je n'obtiens jamais le renouvellement
  • Supprimez la superposition de la mise au point - la couleur de la vision du Web
  • Impossible d'importer un nouveau projet Gradle: impossible de trouver la révision Build Tools * .0.0
  • Exclure des variantes de construction spécifiques
  • SearchView ne s'élargit pas à pleine largeur
  • Comment mesurer le FPS sur Android pendant le développement de l'application
  • 3 Solutions collect form web for “XML dessiné composé de png et de superposition”

    Dans my_button_bg.xml:

     <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/button_normal"/> </selector> 

    Button_normal est un png

    Button_pressed est un xml:

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/button_normal"/> <item android:drawable="@color/btn_bg_pressed_mask"/> </layer-list> 

    Où btn_bg_pressed_mask est une couleur:

     <color name="btn_bg_pressed_mask">#19000000</color> 

    Cela devrait fonctionner

     <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:drawable="@drawable/my_button" /> <item> <selector> <item android:state_pressed="true" android:state_enabled="true"> <color android:color="#00000088" /> </item> </selector> </item> </layer-list> 

    L'ordre des éléments dans le sélecteur XML fait la différence. Le premier match est ce qui va être affiché. Comme vous le voyez dans la réponse de marmor, l'état normal du bouton est répertorié à la fin.

    Une autre chose à garder à l'esprit est que si vous utilisez des images à 9 patch (.9.png), la couleur ne sera appliquée qu'à la zone de contenu. Donc, si vous voulez que la couleur soit superposée sur toute l'image, assurez-vous de marquer l'image entière comme zone de contenu.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.