Android开发:TextView已设@color/tabColor背景,如何添加点击涟漪效果
解决方法:同时保留背景色和涟漪效果
嗨,这个需求我之前开发的时候也遇到过,其实不用纠结替换background的问题,只要把纯色背景和涟漪效果组合起来就可以实现啦,给你两种简单可行的方案:
方案一:使用LayerList叠加背景
创建一个新的Drawable文件(比如bg_tab_with_ripple.xml),把纯色背景和涟漪效果分层放置:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 底层:保留你原来的tabColor背景 --> <item> <shape android:shape="rectangle"> <solid android:color="@color/tabColor" /> </shape> </item> <!-- 上层:添加系统默认的涟漪点击效果 --> <item android:drawable="?android:attr/selectableItemBackground" /> </layer-list>
然后修改你的TextView,把android:background替换成这个新的Drawable:
<TextView android:id="@+id/mistake_btn_tv" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_gravity="bottom" android:background="@drawable/bg_tab_with_ripple" <!-- 替换为组合背景 --> 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"/>
方案二:直接用RippleDrawable包裹背景色
如果想更简洁,也可以直接用RippleDrawable把纯色背景包起来,这样点击时涟漪会直接在背景色上显示:
创建bg_tab_with_ripple.xml:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/your_ripple_color"> <!-- 可以自定义涟漪的颜色 --> <!-- 这里放你原来的纯色背景 --> <item android:drawable="@color/tabColor" /> </ripple>
同样把TextView的android:background指向这个Drawable就可以了。
这两种方法都能完美保留你原来的tabColor背景,同时实现点击涟漪效果,选哪种都可以~
内容的提问来源于stack exchange,提问作者Ashpak Kureshi
相关产品推荐
相关产品推荐

