J'ai besoin de changer la couleur du contour d'une couleur définie par l'utilisateur. Rien à voir avec l'état
J'ai besoin de changer la couleur du contour de l'application. L'utilisateur est en mesure de modifier la couleur d'arrière-plan, donc j'ai besoin de les laisser aussi modifier le contour du bouton. Comme ses est déjà défini dans le drawable (exemple ci-dessous), je n'ai pas trouvé un moyen de changer cela. Semble comme toutes les autres questions de ce genre tout simplement dit d'utiliser le fichier XML.... mais ce n'est pas permettez-moi de le rendre dynamique. Merci pour toute aide!
J'ai besoin de changer la couleur du contour d'une couleur définie par l'utilisateur. Rien à voir avec l'état.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffffff"/>
<stroke
android:width="3dp"
android:color="@color/Dim_Gray" /> <<<<--- This is what I need to change
<padding android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
/>
<corners android:bottomRightRadius="12dp" android:bottomLeftRadius="12dp"
android:topLeftRadius="12dp" android:topRightRadius="12dp"/>
</shape>
- Pourquoi pas de réponse sélectionné pour cette question?
Vous devez vous connecter pour publier un commentaire.
1. Si vous avez dessiné fichier pour une "vue" comme ce
Ensuite, vous pouvez changer
un. Couleur de trait :
b. Solide couleur :
2. Si vous avez dessiné fichier pour une "vue" comme ce
Ensuite, vous pouvez changer l'individu élément attributs en prenant séparer des objets dessinés par il y des positions.
maintenant à changement d'avc ou de couleur unie :
.setStroke
documentation dit Remarque: la modification de cette propriété affecte toutes les instances d'un drawable chargé à partir d'une ressource. Il est recommandé d'invoquermutate()
avant de modification de cette propriété.J'avais besoin d'un moyen de changer la couleur du contour de
GradientDrawable
sans connaître la largeur du trait. Mon but était de le faire à l'aide deDrawable.setTint
. J'ai dû ajouter un transparentsolid
élément à monshape
xml pour le faire fonctionner:Dans votre cas, puisque vous avez à la fois un
solid
etstroke
, alors vous aurez besoin d'utiliser unlayer-list
, où le trait est ajouté APRÈS le solide (de sorte qu'il est dessiné sur le dessus). Cela vous permettra de définir différentes couleurs sur le solide et le coup sans savoir à l'avance ce que la largeur du trait est de:Veuillez jeter un oeil à la LayerDrawable parce qu'il créé à partir de votre XML et utilisé lors de l'exécution.
Voici une Démo Exemple:
Vous pouvez la modifier à l'exécution comme:
Ils sont peut-être en se référant à Couleur Listes D'État qui vous permet de changer la couleur en fonction de si le bouton a été pressé/concentré/activé/etc
Essayez d'utiliser StateLists (par opposition à ColorStateList). Prendre un coup d'oeil:
http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
Vous pouvez également créer un
ShapeDrawable
(ou unRoundRectShape
dans votre exemple) par programme, et ensuite appeler le bouton desetBackgroundDrawable
J'ai répondu à une question similaire dans Modification de la forme de la couleur de la bordure au moment de l'exécution
L'un de ses semblables de la même solution proposée par f20k mais dans mon cas, le drawable était un GradientDrawable au lieu d'un ShapeDrawable.
voir si ça fonctionne...