2015-04-27 11 views
13

Desidero utilizzare effetti a catena sui pulsanti. AppCompat v22.1 ha aggiunto AppCompatButton e nuove funzionalità alla tinta di AppCompat.AppCompatButton backgroundTint API <21

mio layout:

<android.support.v7.widget.AppCompatButton 
     android:id="@+id/add_remove_button" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:backgroundTint="@color/primary" 
     android:textColor="@android:color/white" 
     android:text="Remove" /> 

Sul mio API 22 dispositivo di test l'effetto a catena funziona perfettamente, ma ho perso codifica per API 11 e, purtroppo, ha bisogno di backgroundTint API> = 21. Come posso impostare l'effetto a catena ai pulsanti su versioni API precedenti?

+0

Può essere http://stackoverflow.com/questions/26444391/primary-dark-color-android-under-api-21 è possibile la risposta qui. – Hardy

+0

Le increspature non funzionano fuori dal box su pre-Lollipop, quindi dovrai emularle. – Egor

+0

Ripple funziona solo per api> = 21 –

risposta

54

Basta usare app:backgroundTint invece di android:backgroundTint, la tinta avrà effetto sotto Lollipop. Il motivo è AppCompatActivityAppCompatDelegateImplV7 utilizzare AppCompatViewInflater per modificare automaticamente Button o TextView in AppCompatButton o AppCompatTextView, quindi app:backgroundTint ha l'effetto.

enter image description here

In my project I used it, it worked.

+2

E "app" è definita in questo modo: xmlns: app = "http://schemas.android.com/apk/res-auto" – jk7

+0

Ho un layout lineare su cui sto usando Android: background = "@ drawable/background_sign_up " app: backgroundTint =" # dd282d50 " android: backgroundTintMode =" moltiplica ", cosa fare. – ashishdhiman2007

+0

Funziona ma dice: "Appprevista prefisso dello spazio dei nomi" trovato per tag Pulsante nell'app: backgroundTint line – CGR

2

Le ondulazioni non sono disponibili come funzionalità build su Android < 21. Ciò è dovuto a problemi di prestazioni: i dispositivi con la nuova API possono utilizzare RenderThread che non è disponibile per i dispositivi meno recenti. Consulta anche: http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html

perciò non ci sono increspature su pre-Lollipop? Un sacco di ciò che consente a RippleDrawable di funzionare senza intoppi è il nuovo RenderThread di Android 5.0. Per ottimizzare le prestazioni su versioni precedenti di Android, per ora abbiamo lasciato fuori RippleDrawable.

Problemi correlati