2015-02-19 9 views
9

Su Android Lollipop, sto usando:Android:? Attr/selectableItemBackground non abbastanza visibile su uno sfondo scuro

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

per avere il feedback animata materiale quando clicco su un pulsante.

Funziona bene quando ho un pulsante contenuto in un layout bianco/chiaro, ad esempio un CardView.

Ma quando voglio usare la stessa cosa su uno sfondo scuro, vediamo a malapena l'effetto, non è abbastanza visibile.

Qualcuno ha un'idea?

Grazie

+0

Il modo più semplice è solo per impostare il tema per l'intero contenitore sfondo scuro. Questo è il modo in cui gestiamo Light.DarkActionBar. Qual è la tua API di destinazione? – alanv

+0

Grazie. La mia API di destinazione è 21 (altrimenti non sarei in grado di ricevere il feedback animato del materiale) e ho due versioni del pulsante, una per l'API <21, una per l'API21. Cosa intendi impostando il tema per il contenitore sfondo scuro? –

+1

Su API 21+ è possibile impostare android: theme = "@ android: style/ThemeOverlay.Material.Dark" su una vista o gruppo di viste per modificare tutti gli attributi del tema (colore del testo, colore ondulato, colore del pulsante, ecc.) alle versioni "oscure". Se lo si imposta su un gruppo di viste, il tema viene applicato anche a tutti gli elementi figlio durante l'inflazione della vista. È un modo semplice per avere regioni "scure" in un'interfaccia altrimenti "leggera" (o viceversa). – alanv

risposta

15

Su API 21+ è possibile impostare android:theme="@android:style/ThemeOverlay.Material.Dark" su un View o ViewGroup per cambiare tutto del tema attributi (colore del testo, colore ondulazione, colore del pulsante, ecc) per le versioni "dark". Se lo si imposta su un ViewGroup, il tema viene applicato anche a tutti gli elementi figlio durante l'inflazione. È un modo semplice per avere regioni "scure" in un'interfaccia altrimenti "leggera" (o viceversa).

<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

in qualche modo non funziona se imagebutton ha 'style =" @ style/Widget.AppCompat.Button.Borderless "' e 'android: background ="? SelectableItemBackgroundBorderless "'. Sai perché? – deadfish

1

Soluzione con AppCompat (funziona su vecchie API troppo)

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

C'è un altro modo per cambiare il tema app:

Theme.AppCompat.NoActionBar 

Funziona bene per me.