java - 如何从 RecyclerView 获取触摸反馈?

标签 java android android-listview android-recyclerview

我实现了一个 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/

相关文章:

java - 无法获取java中两个日期之间的天数差异

java - 为什么在 IRC 聊天中使用 PircBot 的 getPrefix 方法不返回任何内容?

java - JTable 上的复选框列编辑

android - 从 FragmentActivity 获取 Fragment 的 View

php - Urban Airship 如何设置多个观众

java - 在我的自定义 ListView 中添加一个复选框(一次只能选中一个)

java - 在 ListView 中显示 SQLite

java - 如何向 JTable 中的现有行添加新行

iphone - 您能否使用 CSS 检测您的电子邮件 HTML 是否在 iOS 和 Android 设备上呈现?

android - 如何让我的 ListView 项目具有(并保持)不同的背景?