Как применить волновой эффект к текстовому просмотру, когда фон уже установлен
Я хочу применить волновой эффект при щелчке любого элемента. Но я не могу применить каждый пункт
android:background="@color/tabColor"
фон уже установлен, так как использовать следующий код
android:background="?android:attr/selectableItemBackground"
<TextView
android:id="@+id/mistake_btn_tv"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
android:background="@color/tabColor"
android:gravity="center"
android:requiresFadingEdge="none"
android:text=""
android:textColor="@color/md_white_1000"
android:textSize="@dimen/txt_20"
android:textStyle="bold"
android:typeface="monospace"/>
Я ожидаю, что оба работают там, мой фон "tabColor", а также волновой эффект
6 ответов
Вы можете использовать настраиваемый нарисованный файл для волнового эффекта. Вот, я делюсь с вами кодом. Просто реализуйте этот код. Надеюсь, он будет работать нормально.
<?xml version="1.0" encoding="UTF-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/colorAccent"
tools:ignore="NewApi">
<item android:id="@android:id/background">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white"/>
<corners
android:radius="5dp"/>
<stroke android:width="1dp" android:color="@color/gray_text"/>
<padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
</shape>
</item>
</ripple>
и установить его в фоновом режиме:-
android:background="@drawable/border_ripple_gray"
Вы должны использовать android:foreground="?attr/selectableItemBackground"
для волнового эффекта.
если вы уже установили фон, сделайте это в XML-коде TextView .
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
используйте эту библиотеку для лучшего эффекта пульсации.. ссылка
Добавьте эту строку в ваш style.xml
<item name="android:colorControlHighlight" tools:targetApi="lollipop">@color/backgroundWhite</item>
и используйте вид собственности:-
android:foreground="?attr/selectableItemBackground"
Я опаздываю на вечеринку, но приведенные выше решения не работают для меня. Поэтому я использую
MaterialButton
как это,
<com.google.android.material.button.MaterialButton
style="?attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="0dp"
android:minHeight="0dp"
android:paddingHorizontal="@dimen/padding_8dp"
android:text="Clickable Text"
android:textColor="your text color"
app:backgroundTint="@android:color/transparent"
app:rippleColor="ripple effect color" />
Здесь,
style="?attr/buttonBarButtonStyle"
а также
app:backgroundTint="@android:color/transparent"
сделает эту кнопку прозрачным фоном, чтобы она выглядела как TextView, а все остальное будет сделано автоматически.