【发布时间】:2017-05-16 10:04:30
【问题描述】:
我尝试在我的 RecyclerView 上实现涟漪效应。这是我的布局:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card"
android:layout_marginTop="7dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="5dp"
android:clickable="true"
card_view:cardElevation="5dp"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
//some properties />
<TextView
//some properties />
<TextView
//some properties />
</LinearLayout>
</android.support.v7.widget.CardView>
为了实现 onclick 监听器,我基本上在这里遵循了这个教程:http://sapandiwakar.in/recycler-view-item-click-handler/
问题是由于线条产生的涟漪效应:
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
不适用于轻型(即快速)印刷机。当我快速点击屏幕时,点击监听器被触发。这意味着已经检测到触摸事件,但是没有显示涟漪效应。要想看到涟漪效果,就得在屏幕上的压力再保持一段时间再松开。
有没有办法纠正这种行为,即使是快速按下也能显示连锁反应?
【问题讨论】:
-
使用
selectableItemBackgroundBorderless。我认为 Marshmallow 改变了selectableItemBackground的行为,所以它只在较长的点击时显示波纹。
标签: android android-recyclerview ripple recyclerview-layout