2015-04-27 2 views
13

Я хочу использовать эффекты пульсации на кнопках. AppCompat v22.1 добавила AppCompatButton и новые функции для тонирования AppCompat.AppCompatButton backgroundTint API <21

Мой Компоновка:

<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" /> 

На моем API 22 тестирующего устройства волновой эффект прекрасно работает, но я кодирования для API 11 и, к сожалению, нуждается backgroundTint API> = 21. Как я могу установить мультипликационный эффект к кнопкам на старых версиях API?

+0

Может быть http://stackoverflow.com/questions/26444391/primary-dark-color-android-under-api-21 Вы можете ответить здесь. – Hardy

+0

Рябчики не работают из коробки на пре-Lollipop, поэтому вам придется подражать им. – Egor

+0

Пульсация работает только для api> = 21 –

ответ

54

Просто используйте app:backgroundTint вместо android:backgroundTint, оттенок вступит в силу ниже леденец. Причина в том, что AppCompatActivityAppCompatDelegateImplV7 использовать AppCompatViewInflater для автоматической смены кнопки или TextView на AppCompatButton или AppCompatTextView, затем app:backgroundTint вступают в силу.

enter image description here

In my project I used it, it worked.

+2

И "приложение" определяется следующим образом: xmlns: app = "http://schemas.android.com/apk/res-auto" – jk7

+0

У меня есть линейный макет, на котором я использую android: background = "@ drawable/background_sign_up " app: backgroundTint =" # dd282d50 " android: backgroundTintMode =" multiply ", что делать. – ashishdhiman2007

+0

Работает, но в нем говорится: «Неожиданный префикс пространства имен» найдено для тега Кнопка в приложении: backgroundTint line – CGR

2

Ряды недоступны как встроенные функции на Android. < 21. Это связано с проблемами производительности: устройства с новым API могут использовать RenderThread, который недоступен для старых устройств. Смотрите также: http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html

Почему там нет ряби на пре-леденец? Многое из того, что позволяет RippleDrawable работать плавно, - это новый RenderThread от Android 5.0. Чтобы оптимизировать производительность в предыдущих версиях Android, мы оставили RippleDrawable на данный момент.

Смежные вопросы