J'ai vu quelques questions SO et ils ont donné quelques méthodes possibles pour réaliser ce que je veux. Par exemple:
Utilisez l'
colorControlHighlight
attribut dans styles.xml.Voici mon styles-v21.xml:
<style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style>
Et mon widget:
<TextView android:id="@+id/tv_take_photo_as_bt" android:layout_width="280dp" android:layout_height="48dp" android:text="@string/act_take_photo" style="@style/SelectableItemBackground"/>
Et ça ne marche pas. J'ai également essayé d'ajouter
parent="Theme.AppCompat
au style "SelectableItemBackground", ou changer encolorControlHighlight(no android: prefix)"
, ou changer en?android:attr/selectableItemBackground
, ni l'un ni l'autre n'est utile.Utilisez l'
backgroundTint
attribut dans la mise en page.Alors j'ajoute
android:backgroundTint="#5677FC"
à monTextView
. Toujours inutile. Ensuite, j'ai essayé de changerandroid:backgroundTintMode
poursrc_in
etsrc_atop
, et ils ne font jamais de différence.
Alors, comment puis-je changer la couleur des ondulations lorsque j'utilise ?attr/selectableItemBackground
comme arrière-plan. Je me concentre uniquement sur Lollipop et plus. Merci d'avance!
colorControlHighlight
au lieu deandroid:colorControlHighlight
fonctionne mieux pour moi, sinon ce n'est que pour la v21 +clickable="true"
et l'effet d'entraînement fonctionneraEffet d'entraînement sur les appareils pré- et Lollipop +
harrane et Liuting ont raison. La réponse acceptée n'est pas la meilleure façon. Permettez-moi de montrer dans le code comment changer la couleur des ondulations pour les versions pré-Lollipop et supérieures
Votre AppTheme doit hériter de n'importe quel thème AppCompat et contenir l'attribut colorControlHighlight (sans le préfixe «android:»)
Votre vue doit contenir clickable = "true" (ou doit avoir un écouteur de clic défini par programme) et l'arrière-plan doit être "? Attr / selectableItemBackgroundBorderless" ou "? Attr / selectableItemBackground":
Remarque: si votre vue parente a un fond blanc, vous ne verrez pas d'effet d'entraînement car elle est blanche. Changer la valeur colorControlHighlight pour une couleur différente
De plus, si vous voulez différentes couleurs d'ondulation sur différentes activités, vous pouvez définir un thème personnel pour chaque activité dans le fichier Manifest, par exemple:
Différentes couleurs d'ondulation pour différents fragments dans la même activité?
Vous pouvez modifier les attributs du thème d'activité pour chaque fragment lors de l'exécution. Il suffit de les écraser avant que le fragment ne soit gonflé avec votre style personnalisé et de l'appliquer à un thème actuel:
dans values / styles.xml
Ensuite, dans votre fragment avant l'inflation dans
onCreateView()
:Ce style ne fonctionnera que pour ce fragment
Différentes couleurs d'ondulation pour différentes vues? (Sucette +)
Vous pouvez changer la couleur d'ondulation pour chaque vue séparément en utilisant l'
colorControlHighlight
attribut, cela ne fonctionne pas si vous les appliquez directement à une vue:vous devez l'appliquer comme thème:
PS En outre, parfois, cette approche aide si vous avez des problèmes inconnus d'ondulation et que vous ne pouvez pas le comprendre. Dans mon cas, j'ai utilisé une bibliothèque coulissante tierce qui a gâché les effets d'entraînement pour toute la mise en page et l'ajout explicite de ce thème à toutes les vues cliquables a fonctionné pour moi.
la source
Il montre un effet d'entraînement avec la couleur sur l'API +21 et un simple fond gris sur la presse pour l'API -21. Ajoutez ce style:
Et réglez-le sur la vue:
la source
android:theme
et non ce que les gens utilisent habituellementstyle
.La réponse acceptée est fausse.
La bonne façon d'utiliser est ce que Liuting a mentionné dans le commentaire. Utiliser
colorControlHighlight
au lieu deandroid:colorControlHighlight
pour changer la valeurcolorControlHighlight
par défaut deAppCompat
* Veuillez vous référer à http://android-developers.blogspot.co.uk/2014/10/appcompat-v21-material-design-for-pre.html dans la section Theming *
la source
Suivez les étapes ci-dessous:
your_layout.xml
styles.xml
la source
Ce code fonctionne pour moi pour créer une ondulation:
Je n'ai trouvé aucun moyen de modifier l'attribut selectableItemBackground. C'est pourquoi je l'ai fait comme ci-dessus.
la source
Dans le thème noir foncé (ou toute autre), essayez d'utiliser comme ci-dessous, créez d'abord
ripple_effect.xml
dans undrawable
dossier et ajoutez du code commepuis définissez l'arrière-plan de votre vue Any comme
Linear layout, Button, TextView
etc.la source
Utilisez l'attribut de premier plan comme selectableItemBackground et l'attribut d'arrière-plan comme couleur souhaitée.
la source
How can I modify ripple color when using ?attr/selectableItemBackground as background?