我实现了一个 RecyclerView
,但我不知道如何获得触摸反馈(它的链式 react )。
这是我为 onClickListener 所做的:
holder.itemView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//start Intent
}
});
我还向我的 XML 添加了可点击和可聚焦的功能。这就是回收者 View 膨胀的内容:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:padding="4dp" >
最佳答案
你必须设置一个波纹drawable作为背景:
android:background="@drawable/ripple"
波纹.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ffa0a0a0"/>
您可能需要屏蔽可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ffa0a0a0">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#ffa0a0a0"/>
</shape>
</item>
</ripple>
这将在触摸时创建一个简单的灰色波纹(如果您需要更多说明,这里有 guide)。
在 SDK 版本 21 (Lollipop) 中添加了 RippleDrawable。在 pre-lollipop 上使用 Ripple drawable 会使应用程序崩溃。要么在前 Lollipop 设备上使用简单的选择器,要么使用重新创建效果的库。 ( GitHub )
更新:您可以使用这段代码轻松获得链式 react :
android:background="?attr/selectableItemBackground"
或者如果您不想要矩形 mask :
android:background="?attr/selectableItemBackgroundBorderless"
这与 pre-lollipop 设备兼容,我们将使用一个简单的选择器。我相信这会在具有深色主题的应用程序中产生浅色涟漪,反之亦然,因此如果您想要自定义彩色涟漪,您仍然需要创建一个涟漪图。
关于java - 如何从 RecyclerView 获取触摸反馈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100961/