J'ai eu un simple bouton mis en place avec une image d'arrière-plan défini commeComment aligner verticalement du texte dans un bouton avec un arrière-plan dessinable?
android:background="?attr/button"
où ?attr/button
était une référence à un simple 9-patch .png. Tout a bien fonctionné, le texte dans le bouton a été aligné correctement. Puis j'ai eu besoin d'un fond différent pour un état enfoncé du bouton. Alors j'ai changé que pour
android:background="@drawable/state_button"
où @drawable/state_button
est un xml avec les états suivants
<?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/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_pressed" /> <!-- focused -->
<item android:drawable="@drawable/button" /> <!-- default -->
</selector>
Après cela, je ne peux pas aligner le texte correctement. Si je mets android:gravity="center_vertical"
le texte est dessiné à environ 1/4 de la hauteur du bouton à partir du haut. J'ai revérifié mes images de 9 patchs, tout semble aller bien avec eux. Et j'ai aussi essayé d'avoir des pngs réguliers pour le fond, ça ne change rien non plus.