Il s'agit d'un sélecteur de bouton tel que lorsqu'il est normal, il apparaît en rouge, lorsqu'il est enfoncé, il apparaît en gris.
Je voudrais demander comment le code pourrait-il être modifié directement de manière à ce que, une fois APPUYÉ, la taille et la couleur du texte puissent également changer? Merci beaucoup!
<item android:state_pressed="true" >
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="@color/grey"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="#FF6699"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
Vous ne pouvez pas modifier la taille du texte avec une liste d'états dessinable . Pour changer la couleur et la taille du texte, procédez comme suit:
Couleur du texte
Pour modifier la couleur du texte, vous pouvez créer une ressource de liste d'état de couleur . Ce sera une ressource distincte située dans le
res/color/
répertoire. Dans layout xml, vous devez le définir comme valeur pour l'android:textColor
attribut. Le sélecteur de couleur contiendra alors quelque chose comme ceci:Taille du texte
Vous ne pouvez pas modifier la taille du texte simplement avec des ressources. Il n'y a pas de "sélecteur dimen". Vous devez le faire dans le code. Et il n'y a pas de solution simple.
La solution la plus simple pourrait probablement être d'utiliser
View.onTouchListener()
et de gérer les événements de montée et de descente en conséquence. Utilisez quelque chose comme ceci:Une solution différente peut être d'étendre la vue et de remplacer la
setPressed(Boolean)
méthode. La méthode est appelée en interne lorsque le changement de l'état enfoncé se produit. Modifiez ensuite la taille du texte en conséquence dans l'appel de méthode (n'oubliez pas d'appeler le super).la source
Créer custom_selector.xml dans le dossier dessinable
Créer une forme selected.xml dans un dossier dessinable
Créer une forme unselected.xml dans un dossier dessinable
Ajouter les couleurs suivantes pour l'état sélectionné / non sélectionné dans le dossier color.xml de valeurs
vous pouvez vérifier la solution complète d' ici
la source
La meilleure façon d'implémenter le sélecteur est d'utiliser le xml au lieu d'utiliser la méthode programmatique car il est plus facile à implémenter avec xml.
Pour plus d'informations, j'ai implémenté en utilisant ce lien http://www.blazin.in/2016/03/how-to-use-selectors-for-botton.html
la source
Dans le fichier Layout .xml
btn_selector.xml
la source
Vous pouvez utiliser ce code:
(Fichier de sélection) img_sublist_carat_selector.xml:
la source