Recyclerview项目点击涟漪效果[重复]
Posted
技术标签:
【中文标题】Recyclerview项目点击涟漪效果[重复]【英文标题】:Recyclerview item click ripple effect [duplicate] 【发布时间】:2016-11-26 04:39:36 【问题描述】:我正在尝试将Ripple
效果添加到RecyclerView
的项目。我在网上看了一下,但找不到我需要的东西。我已经尝试将android:background
属性设置为RecyclerView
本身并将其设置为"?android:selectableItemBackground"
,但它不起作用。:
我的父布局是这样的
<LinearLayout
android:layout_
android:layout_
android:padding="10dp">
<android.support.v7.widget.RecyclerView
android:id="@+id/dailyTaskList"
android:layout_
android:layout_
android:clickable="true"
android:focusable="true"
android:scrollbars="vertical" />
</LinearLayout>
适配器模板如下所示
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/txtTitle"
style="@style/kaho_panel_sub_heading_textview_style"
android:layout_
android:layout_ />
<TextView
android:id="@+id/txtDate"
style="@style/kaho_content_small_textview_style"
android:layout_
android:layout_ />
</LinearLayout>
</LinearLayout>
请给我解决办法
【问题讨论】:
你尝试过哪个家长android:background="?android:attr/selectableItemBackground"
?
【参考方案1】:
将android:background="?attr/selectableItemBackground"
添加到项目布局的最顶层父级应该可以解决问题。
但是在某些情况下它仍然会错过动画,添加 android:clickable="true"
就可以了。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="?attr/selectableItemBackground"
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/txtTitle"
style="@style/kaho_panel_sub_heading_textview_style"
android:layout_
android:layout_ />
<TextView
android:id="@+id/txtDate"
style="@style/kaho_content_small_textview_style"
android:layout_
android:layout_ />
</LinearLayout>
</LinearLayout>
【讨论】:
对于ConstraintLayout
不起作用。
它适用于 ConstraintLayout(尝试将 clickable 和 focusable 设置为 true)。
将 android:background="?attr/selectableItemBackground" 添加到我的项目布局的最顶层父级有效。
3 年后,这是 SO 上众多答案中唯一有效的答案
每天使用 ;)【参考方案2】:
在你的 recyclerView Item Parent 中,添加
android:background="?android:attr/selectableItemBackground"
如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:background="?android:attr/selectableItemBackground"
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/txtTitle"
style="@style/kaho_panel_sub_heading_textview_style"
android:layout_
android:layout_ />
<TextView
android:id="@+id/txtDate"
style="@style/kaho_content_small_textview_style"
android:layout_
android:layout_ />
</LinearLayout>
</LinearLayout>
【讨论】:
以上是关于Recyclerview项目点击涟漪效果[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 和 iOS 上点击自定义按钮时,实现“突出显示效果”而不是“涟漪效果”