Android Studio中如何为RecyclerView点击项添加背景或阴影效果
RecyclerView列表项点击反馈实现方法
不用改动你现有的点击跳转逻辑,直接通过布局属性加状态选择器就能实现点击时的背景/阴影反馈,步骤如下:
- 快速实现系统默认水波纹反馈
找到你咖啡馆列表对应的单个item布局文件,给布局的根节点添加以下三个属性:
android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"
如果想要无边界的水波纹扩散效果,把foreground属性的值替换为?attr/selectableItemBackgroundBorderless即可,这是Android原生自带的Material Design风格点击反馈,不需要额外写资源文件,适配所有系统版本。
- 自定义按压阴影/背景样式
如果想要自己定义点击时的阴影、背景色效果,就自己写状态选择器资源:
- 在
res/drawable目录下新建cafe_item_selector.xml,写入以下代码,可根据需求修改颜色、圆角、阴影大小参数:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 按压状态:显示阴影+浅灰背景 --> <item android:state_pressed="true"> <layer-list> <!-- 阴影层 --> <item android:top="3dp" android:left="3dp"> <shape android:shape="rectangle"> <solid android:color="#20000000"/> <corners android:radius="8dp"/> </shape> </item> <!-- 内容背景层 --> <item android:bottom="3dp" android:right="3dp"> <shape android:shape="rectangle"> <solid android:color="#F0F0F0"/> <corners android:radius="8dp"/> </shape> </item> </layer-list> </item> <!-- 默认状态:白色无阴影 --> <item> <layer-list> <item android:top="3dp" android:left="3dp"> <shape android:shape="rectangle"> <solid android:color="#00000000"/> <corners android:radius="8dp"/> </shape> </item> <item android:bottom="3dp" android:right="3dp"> <shape android:shape="rectangle"> <solid android:color="#FFFFFF"/> <corners android:radius="8dp"/> </shape> </item> </layer-list> </item> </selector>
- 把item根布局的
android:background属性设置为@drawable/cafe_item_selector即可,点击时会自动切换到按压状态的阴影样式。
- 注意事项
如果列表项里的ImageView、TextView出现抢占点击状态、反馈效果只在子控件上显示的问题,给这两个子控件加上以下属性:
android:clickable="false" android:focusable="false"
你现有的addOnItemTouchListener点击跳转逻辑完全不需要修改,布局加完属性之后,点击时系统会自动切换控件状态,反馈效果会在点击瞬间自动显示,跳转新页面后会自动恢复默认状态。
内容的提问来源于stack exchange,提问作者aycelenozdemir
相关产品推荐
相关产品推荐

