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.ColoredStil, der Ihre DesignscolorButtonNormal für die deaktivierte Farbe und colorAccentfü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 colorButtonNormaloder benötigen colorAccent, können Sie ein verwenden, ThemeOverlaywie in erläutert diesem Pro-Tipp und android:themeauf 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.