2015-02-19 7 views
9

Auf Android Lollipop, ich bin mit:android: attr/selectableItemBackground nicht sichtbar genug, um auf einem dunklen Hintergrund

android:background="?android:attr/selectableItemBackground" 

das Material animierte Feedback zu haben, wenn ich auf einen Knopf klicken.

Es funktioniert gut, wenn ich eine Schaltfläche in einem Weiß/Licht-Layout enthalten, wie zum Beispiel eine CardView.

Aber wenn ich das gleiche auf einem dunklen Hintergrund verwenden möchte, sehen wir kaum den Effekt, es ist nicht sichtbar genug.

Hat jemand eine Idee?

Danke

+0

Der einfachste Weg besteht darin, das Thema für den gesamten Container mit dunklem Hintergrund festzulegen. So behandeln wir Light.DarkActionBar. Was ist Ihre Ziel-API? – alanv

+0

Danke. Meine Ziel-API ist 21 (ich wäre nicht in der Lage, das Material animiertes Feedback zu haben, wenn nicht anders) und ich habe zwei Versionen des Buttons, einen für API <21, einen für API21. Was meinst du damit, das Thema für den dunklen Hintergrundcontainer zu setzen? –

+1

Auf API 21+ können Sie android: theme = "@ android: style/ThemeOverlay.Material.Dark" in einer Ansicht oder Ansichtsgruppe festlegen, um alle Design-Attribute (Textfarbe, Ripple-Farbe, Schaltflächenfarbe usw.) zu ändern. zu den "dunklen" Versionen. Wenn Sie es für eine Ansichtsgruppe festlegen, wird das Thema auch während der Ansichtsinflation auf alle untergeordneten Elemente angewendet. Es ist ein einfacher Weg, um Bereiche von "dunkel" in einer ansonsten "hellen" Schnittstelle (oder umgekehrt) zu haben. – alanv

Antwort

15

Auf API 21+ Sie android:theme="@android:style/ThemeOverlay.Material.Dark" auf einem View oder ViewGroup zu ändern all die Themenattribute (Textfarbe, Welligkeit Farbe, Taste Farbe, etc.) zu den „dunklen“ Versionen einstellen. Wenn Sie es auf ViewGroup setzen, wird das Thema während der Inflation auch auf alle untergeordneten Elemente angewendet. Es ist ein einfacher Weg, um Bereiche von "dunkel" in einer ansonsten "hellen" Schnittstelle (oder umgekehrt) zu haben.

<LinearLayout 
    android:id="@id/my_dark_layout" 
    ... 
    android:theme="@android:style/ThemeOverlay.Material.Dark"> 

    <TextView 
     android:id="@id/my_dark_bounded_ripple" 
     ... 
     android:background="?android:attr/selectableItemBackground" 
     android:text="Bounded ripple" /> 

    <ImageButton 
     android:id="@id/my_dark_unbounded_ripple" 
     ... 
     android:background="?android:attr/selectableItemBackgroundBorderless" 
     android:src="@drawable/my_icon" /> 

</LinearLayout> 
+0

irgendwie funktioniert es nicht, wenn imagebutton hat "style =" @ style/Widget.AppCompat.Button.Borderless "' und 'android: background ="? SelectableItemBackgroundBorderless "'. Weißt du, warum? – deadfish

1

Lösung mit AppCompat (funktioniert auf alten APIs zu)

android:theme="@style/Base.ThemeOverlay.AppCompat.Dark" 
android:background="?attr/selectableItemBackground" 
0

Es gibt eine andere Art und Weise ist die App Thema zu ändern:

Theme.AppCompat.NoActionBar 

Es funktioniert gut für mich.

Verwandte Themen