Wenn Sie verwenden android:background
, ersetzen Sie einen Großteil des Stils und des Erscheinungsbilds einer Schaltfläche durch eine leere Farbe.
Update: Ab Version 23.0.0 von AppCompat gibt es einen neuen Widget.AppCompat.Button.Colored
Stil, der Ihre DesignscolorButtonNormal
für die deaktivierte Farbe und colorAccent
für die aktivierte Farbe verwendet.
Auf diese Weise können Sie es direkt über auf Ihre Schaltfläche anwenden
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Wenn Sie ein benutzerdefiniertes colorButtonNormal
oder benötigen colorAccent
, können Sie ein verwenden, ThemeOverlay
wie in erläutert diesem Pro-Tipp und android:theme
auf der Schaltfläche .
Vorherige Antwort
Sie können ein Drawable in Ihrem v21-Verzeichnis für Ihren Hintergrund verwenden, z.
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="?attr/colorPrimary"/>
</ripple>
Dadurch wird sichergestellt, dass Ihre Hintergrundfarbe ist ?attr/colorPrimary
die Standard-Ripple-Animation verwendet und verwendet, wobei die Standardeinstellung verwendet wird ?attr/colorControlHighlight
(die Sie auch in Ihrem Design festlegen können, wenn Sie möchten).
Hinweis: Sie müssen einen benutzerdefinierten Selektor für weniger als v21 erstellen:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/primaryPressed" android:state_pressed="true"/>
<item android:drawable="@color/primaryFocused" android:state_focused="true"/>
<item android:drawable="@color/primary"/>
</selector>
Angenommen, Sie haben einige Farben, die Sie für den Standard-, Druck- und Fokusstatus möchten. Persönlich habe ich einen Screenshot einer Welligkeit auf halbem Weg durch die Auswahl gemacht und den primären / fokussierten Zustand daraus gezogen.