Comment puis-je modifier l'ondulation de couleur lors de l'utilisation ?attr/selectableItemBackground en arrière-plan?
J'ai vu quelques questions, et leur a donné quelques méthodes possibles pour obtenir ce que je veux. Par exemple:
-
Utilisation
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 fonctionne pas. J'ai aussi essayé d'ajouter
parent="Theme.AppCompat
à "SelectableItemBackground" style", ou le changement decolorControlHighlight(no android: prefix)"
, ou le changement de?android:attr/selectableItemBackground
, il n'est ni utile. -
Utilisation
backgroundTint
attribut dans la mise en page.J'ai donc ajouter
android:backgroundTint="#5677FC"
à monTextView
. Encore inutile. Alors j'ai essayé de changerandroid:backgroundTintMode
àsrc_in
etsrc_atop
, et ils n'ont jamais de faire une différence.
Alors, comment puis-je changer l'ondulation de couleur lorsque j'utilise ?attr/selectableItemBackground
comme arrière-plan. Je vous concentrer uniquement sur Lollipop et au-dessus. Je vous remercie à l'avance!
Vous devez vous connecter pour publier un commentaire.
Enfin j'ai trouver la solution: au lieu d'utiliser
android:colorControlHighlight
directement dans le thèmeSelectableItemBackground
, je devrais écrire un autre style:Alors:
Enfin ajouter
style="@style/SelectableItemBackground"
àView
dans layout.xml.MIS À JOUR SUR 2016/8/26
Après la N de la libération, j'ai trouvé que, parfois, nous ne pouvons pas utiliser cette méthode pour définir l'ondulation de couleur pour une sorte de
View
(par exemple, laCardView
). Maintenant, je recommande fortement les développeurs utilisantRippleDrawable
, qui peut également être déclaré en xml. Voici un exemple:Je veux montrer un effet d'entraînement lorsque l'utilisateur touche/clique sur un
CardView
ci-dessus API21, et bien sûr, il devrait y avoir un autre type de commentaires avant de Sucette. Donc, je devrais écrire:et
selectable_item_background
dansdrawable
dossier:selectable_item_background
dansdrawable-v21
dossier:enfin, la
ripple_black
dansdrawable
(oudrawable-v21
) dossier:Que c'est. Pour d'autres points de vue, peut-être que vous devriez utiliser
android:background="@drawable/selectable_item_background"
. N'oubliez pas de mettre unOnClickListener
,OnTouchListener
ou quelque chose comme celles pour eux, sinon ondulation de ne pas s'afficher.colorControlHighlight
au lieu deandroid:colorControlHighlight
fonctionne le mieux pour moi, sinon c'est uniquement pour la version v21+clickable="true"
et de l'effet d'entraînement va travaillerEffet d'entraînement sur la pré - et la Sucette+ appareils
harrane et Liuting sont à droite. L'on a accepté la réponse n'est pas la meilleure façon.
Laissez-moi vous montrer dans le code comment faire pour modifier l'ondulation de couleur pour pré-Sucette versions et plus
Votre AppTheme devrait hériter de toute AppCompat thème et contiennent colorControlHighlight attribut (sans " android:' prefix)
Votre vue doit contenir cliquable="true" (ou devraient avoir un écouteur de clics définie par programme) et le fond doit être "?attr/selectableItemBackgroundBorderless" ou "?attr/selectableItemBackground" :
Remarque: si votre parent a vue a fond blanc, vous ne verrez pas l'effet d'entraînement, car elle est blanche. Changement colorControlHighlight valeur par une couleur différente
Aussi, si vous souhaitez que les différents ondulation de couleurs sur les différentes activités que vous pouvez définir des personnels thème pour chaque activité dans le fichier de Manifeste, par exemple:
Différents ondulation des couleurs pour les différents fragments de la même activité?
Vous pouvez modifier les attributs de l'Activité Thème pour chaque fragment dans l'exécution. Juste les écraser avant fragment a été gonflé avec votre style personnalisé et de les appliquer à un Thème d'actualité:
dans values/styles.xml
Puis, dans votre fragment avant de l'inflation dans
onCreateView()
:Ce style ne fonctionnera que pour ce fragment
Différents ondulation de couleur pour les différents points de Vue? (Lollipop +)
Vous pouvez modifier le taux d'ondulation de couleur pour chaque vue séparément à l'aide de
colorControlHighlight
attribut, il ne fonctionne pas si vous les appliquez à une vue directement:vous devriez l'appliquer en tant que thème:
P. S. Aussi, parfois, cette approche aide si vous avez des inconnus avec ondulation et vous ne pouvez pas comprendre.
Dans mon cas, j'ai utilisé de la 3e partie coulissante lib qui a foiré d'effets d'entraînement pour l'ensemble de la mise en page et en ajoutant explicitement ce thème à tous cliquables vues fonctionné pour moi.
Accepté la réponse est fausse.
La bonne façon de l'utiliser est ce que Liuting mentionnées dans le commentaire.
Utilisation
colorControlHighlight
au lieu deandroid:colorControlHighlight
pour changer la valeur par défautcolorControlHighlight
deAppCompat
* Veuillez vous reporter à http://android-developers.blogspot.co.uk/2014/10/appcompat-v21-material-design-for-pre.html dans la Thématisation de la section *
Elle montre l'effet d'onde avec de la couleur sur l'API de +21, simple et fond gris sur appuyez sur pour API -21.
Ajouter ce style:
Et mis à la vue:
Utiliser le premier plan en tant qu'attribut selectableItemBackground
et attributs en arrière-plan la couleur que vous voulez.
How can I modify ripple color when using ?attr/selectableItemBackground as background?
Ce code fonctionne pour moi de créer une ondulation:
Je n'ai pas trouvé de moyen de modifier les selectableItemBackground attribut.
C'est pourquoi je l'ai fait comme ci-dessus.