Ich habe einige SO-Fragen gesehen und sie gaben einige mögliche Methoden an, um das zu erreichen, was ich will. Beispielsweise:
Verwenden Sie das
colorControlHighlight
Attribut in styles.xml.Hier ist meine styles-v21.xml:
<style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style>
Und mein 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"/>
Und es funktioniert nicht. Ich habe auch versucht, den
parent="Theme.AppCompat
Stil "SelectableItemBackground" zu ergänzen oder zu änderncolorControlHighlight(no android: prefix)"
oder zu ändern?android:attr/selectableItemBackground
, beides ist nicht nützlich.Verwenden Sie
backgroundTint
Attribut im Layout.Also füge ich
android:backgroundTint="#5677FC"
meinem hinzuTextView
. Immer noch nutzlos. Dann habe ich versucht,android:backgroundTintMode
zusrc_in
und zu wechselnsrc_atop
, und sie machen nie einen Unterschied.
Wie kann ich die Welligkeitsfarbe ändern, wenn ich sie ?attr/selectableItemBackground
als Hintergrund verwende ? Ich konzentriere mich nur auf Lollipop und höher. Vielen Dank im Voraus!
colorControlHighlight
stattandroid:colorControlHighlight
funktioniert besser für mich, sonst ist es nur für v21 +clickable="true"
und der Ripple-Effekt wird funktionierenRipple-Effekt auf Pre- und Lollipop + -Geräten
Harrane und Liuting haben recht. Die akzeptierte Antwort ist nicht der beste Weg. Lassen Sie mich im Code zeigen, wie Sie die Welligkeitsfarbe für Versionen vor Lollipop und höher ändern können
Ihr AppTheme sollte von jedem AppCompat-Design erben und das colorControlHighlight-Attribut enthalten (ohne Präfix 'android:').
Ihre Ansicht sollte clickable = "true" enthalten (oder einen programmgesteuerten Klick-Listener haben) und der Hintergrund sollte "? Attr / selectableItemBackgroundBorderless" oder "? Attr / selectableItemBackground" sein:
Hinweis: Wenn Ihre übergeordnete Ansicht einen weißen Hintergrund hat, wird kein Welligkeitseffekt angezeigt, da dieser weiß ist. Ändern Sie den colorControlHighlight-Wert für eine andere Farbe
Wenn Sie für verschiedene Aktivitäten unterschiedliche Wellenfarben wünschen, können Sie für jede Aktivität in der Manifest-Datei ein persönliches Thema festlegen, z. B.:
Unterschiedliche Wellenfarben für unterschiedliche Fragmente in derselben Aktivität?
Sie können die Attribute des Aktivitätsthemas für jedes Fragment zur Laufzeit ändern. Überschreiben Sie sie einfach, bevor das Fragment mit Ihrem benutzerdefinierten Stil aufgeblasen wurde, und wenden Sie es auf ein aktuelles Thema an:
in values / styles.xml
Dann in Ihrem Fragment vor der Inflation in
onCreateView()
:Dieser Stil funktioniert nur für dieses Fragment
Unterschiedliche Welligkeitsfarbe für unterschiedliche Ansichten? (Lutscher +)
Sie können die Welligkeitsfarbe für jede Ansicht separat mithilfe eines
colorControlHighlight
Attributs ändern. Dies funktioniert nicht, wenn Sie sie direkt auf eine Ansicht anwenden:Sie sollten es als Thema anwenden:
PS Manchmal hilft dieser Ansatz auch, wenn Sie unbekannte Probleme mit der Welligkeit haben und diese nicht herausfinden können. In meinem Fall habe ich die Sliding Lib von Drittanbietern verwendet, die die Welligkeitseffekte für das gesamte Layout durcheinander gebracht und dieses Thema explizit zu allen für mich erarbeiteten anklickbaren Ansichten hinzugefügt hat.
quelle
Es zeigt einen Welleneffekt mit Farbe auf API +21 und einen einfachen grauen Hintergrund auf Druck für API-21. Fügen Sie diesen Stil hinzu:
Und setzen Sie es auf die Ansicht:
quelle
android:theme
und nicht das, was die Leute normalerweise benutzenstyle
.Die akzeptierte Antwort ist falsch.
Die richtige Verwendung ist das, was Liuting im Kommentar erwähnt hat. Verwenden Sie
colorControlHighlight
stattandroid:colorControlHighlight
zum Ändern der StandardeinstellungcolorControlHighlight
vonAppCompat
* Weitere Informationen finden Sie unter http://android-developers.blogspot.co.uk/2014/10/appcompat-v21-material-design-for-pre.html im Abschnitt Theming *
quelle
Führen Sie die folgenden Schritte aus:
your_layout.xml
styles.xml
quelle
Dieser Code funktioniert für mich, um eine Welligkeit zu erzeugen:
Ich habe keine Möglichkeit gefunden, das Attribut selectableItemBackground zu ändern. Deshalb habe ich es wie oben gemacht.
quelle
In dunkelschwarzen Themen (oder anderen) Apps versuchen Sie, wie unten zu verwenden, zuerst
ripple_effect.xml
in einemdrawable
Ordner zu erstellen und Code wie hinzuzufügenStellen Sie dann den Hintergrund auf Ihre Ansicht wie
Linear layout, Button, TextView
usw. ein.quelle
Verwenden Sie das Vordergrundattribut als selectableItemBackground und das Hintergrundattribut als gewünschte Farbe.
quelle
How can I modify ripple color when using ?attr/selectableItemBackground as background?