已经设置背景时如何在textview上应用涟漪效果

时间:2019-02-19 10:21:25

标签: android material-design rippledrawable

我想在单击任何项​​目时应用波纹效果。但是我不能应用每一项

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”,而且还有波纹效果

5 个答案:

答案 0 :(得分:0)

您应该使用android:foreground="?attr/selectableItemBackground"来产生波纹效果。

答案 1 :(得分:0)

您可以使用自定义可绘制文件来产生波纹效果。在这里,我正在与您共享代码。只需实现该代码即可。希望它能正常工作。

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

答案 2 :(得分:0)

在您的style.xml中添加此行

<item name="android:colorControlHighlight" tools:targetApi="lollipop">@color/backgroundWhite</item>

并使用view属性:-

android:foreground="?attr/selectableItemBackground"

答案 3 :(得分:0)

enter image description here

使用此库可获得最佳波纹效果。      link

答案 4 :(得分:0)

如果您已经在 TextView XML 代码中设置了背景。

public void clearFirebaseAuthInfo(Context ctx)
    {
        File dir = new File(ctx.getFilesDir().getParent() + "/shared_prefs/");
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++)
        {
            if(children[i].contains("com.google.firebase.auth.api."))
            {
                new File(dir, children[i]).delete();
            }
        }
    }