Я видел несколько вопросов SO, и они дали несколько возможных методов для достижения того, что я хочу. Например:
Используйте
colorControlHighlight
атрибут в styles.xml.Вот мой файл styles-v21.xml:
<style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style>
И мой виджет:
<TextView android:id="@+id/tv_take_photo_as_bt" android:layout_width="280dp" android:layout_height="48dp" android:text="@string/act_take_photo" style="@style/SelectableItemBackground"/>
И это не работает. Я также пытался добавить
parent="Theme.AppCompat
стиль «SelectableItemBackground», или изменитьcolorControlHighlight(no android: prefix)"
, или изменить его?android:attr/selectableItemBackground
, но это не помогло.Использовать
backgroundTint
атрибут в макете.Так что добавляю
android:backgroundTint="#5677FC"
в свойTextView
. По-прежнему бесполезно. Затем я попытался изменитьandroid:backgroundTintMode
наsrc_in
иsrc_atop
, но они никогда не имели значения.
Итак, как я могу изменить цвет ряби при использовании в ?attr/selectableItemBackground
качестве фона. Я сосредоточен только на Lollipop и выше. Заранее спасибо!
colorControlHighlight
вместоandroid:colorControlHighlight
работает лучше для меня, иначе только для v21 +clickable="true"
и эффект ряби будет работатьЭффект пульсации на устройствах pre- и Lollipop +
Харран и Лютинг правы. Принятый ответ - не лучший вариант. Позвольте мне показать в коде, как изменить цвет пульсации для версий до Lollipop и выше
Ваша AppTheme должна быть унаследована от любой темы AppCompat и содержать атрибут colorControlHighlight (без префикса android:)
Ваше представление должно содержать clickable = "true" (или должно иметь программную установку прослушивателя кликов), а фон должен быть "? Attr / selectableItemBackgroundBorderless" или "? Attr / selectableItemBackground":
Примечание: если у родительского представления белый фон, вы не увидите эффекта ряби, так как он белый. Измените значение colorControlHighlight на другой цвет
Кроме того, если вам нужны разные цвета пульсации для разных действий, вы можете установить индивидуальную тему для каждого действия в файле манифеста, например:
Разные цвета пульсации для разных фрагментов в одном и том же упражнении?
Вы можете изменить атрибуты Activity Theme для каждого фрагмента во время выполнения. Просто перезапишите их, прежде чем фрагмент будет наполнен вашим собственным стилем, и примените к текущей теме:
в values / styles.xml
Затем в вашем фрагменте до инфляции в
onCreateView()
:Этот стиль будет работать только для этого фрагмента
Разный цвет пульсации для разных просмотров? (Леденец +)
Вы можете изменить цвет пульсации для каждого представления отдельно, используя
colorControlHighlight
атрибут, это не сработает, если вы примените их к представлению напрямую:вы должны применить его как тему:
PS Также иногда этот подход помогает, если у вас есть неизвестные проблемы с рябью, и вы не можете с этим разобраться. В моем случае я использовал стороннюю скользящую библиотеку, которая испортила эффекты пульсации для всего макета и явно добавила эту тему ко всем интерактивным представлениям, разработанным для меня.
источник
Он показывает эффект ряби с цветом на API +21 и простой серый фон при нажатии для API -21. Добавьте этот стиль:
И установите его на вид:
источник
android:theme
а не то, что люди обычно используютstyle
.Принятый ответ неверен.
Правильный способ использования - это то, что Лютинг упомянул в комментарии. Используйте
colorControlHighlight
вместоandroid:colorControlHighlight
для изменения значения по умолчаниюcolorControlHighlight
сAppCompat
* См. Http://android-developers.blogspot.co.uk/2014/10/appcompat-v21-material-design-for-pre.html в разделе «Темы» *
источник
Используйте следующие шаги:
your_layout.xml
styles.xml
источник
Этот код работает на меня, чтобы создать рябь:
Я не нашел способа изменить атрибут selectableItemBackground. Вот почему я сделал так, как описано выше.
источник
В темно-черной теме (или любой другой) попробуйте использовать приложение, как показано ниже, сначала создайте
ripple_effect.xml
вdrawable
папке и добавьте код, напримерзатем установите фон для любого вида, например,
Linear layout, Button, TextView
и т. д.источник
Используйте атрибут переднего плана как selectableItemBackground и атрибут background как желаемый цвет.
источник
How can I modify ripple color when using ?attr/selectableItemBackground as background?