Как применить волновой эффект к текстовому просмотру, когда фон уже установлен

Я хочу применить волновой эффект при щелчке любого элемента. Но я не могу применить каждый пункт

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, а все остальное будет сделано автоматически.

Другие вопросы по тегам