当前位置: 首页 > 知识库问答 >
问题:

触摸反馈与回收站视图和CardView

农均
2023-03-14

我很乐意为我的开源库启用触摸反馈。

我创建了一个回收视图和一个卡片视图cardwiew包含具有不同onClick操作的不同区域。现在,如果用户点击卡上的任何地方,我很想触发连锁反应,但我无法实现这种行为。

这是我的列表,你也可以在GitHub上找到:https://github.com/mikepenz/AboutLibraries/blob/master/library/src/main/res/layout/listitem_opensource.xml

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:background="@drawable/button_rect_normal"/>

<LinearLayout
    android:padding="6dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:gravity="center_vertical"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/libraryName"
            android:textColor="@color/title_openSource"
            android:textSize="@dimen/textSizeLarge_openSource"
            android:textStyle="normal"
            android:layout_width="0dp"
            android:layout_weight="5"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="1"/>

        <TextView
            android:id="@+id/libraryCreator"
            android:textColor="@color/text_openSource"
            android:textStyle="normal"
            android:layout_width="0dp"
            android:layout_weight="2"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:gravity="right"
            android:maxLines="2"
            android:textSize="@dimen/textSizeSmall_openSource"/>
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:layout_marginTop="4dp"
        android:background="@color/dividerLight_openSource"/>

    <TextView
        android:id="@+id/libraryDescription"
        android:textSize="@dimen/textSizeSmall_openSource"
        android:textStyle="normal"
        android:textColor="@color/text_openSource"
        android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="20">
    </TextView>

    <View
        android:id="@+id/libraryBottomDivider"
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:layout_marginTop="4dp"
        android:background="@color/dividerLight_openSource"/>

    <LinearLayout
        android:id="@+id/libraryBottomContainer"
        android:gravity="center_vertical"
        android:paddingLeft="8dp"
        android:paddingTop="4dp"
        android:paddingRight="8dp"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/libraryVersion"
            android:textColor="@color/text_openSource"
            android:textStyle="normal"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:maxLines="1"
            android:textSize="@dimen/textSizeSmall_openSource"/>

        <TextView
            android:id="@+id/libraryLicense"
            android:textColor="@color/text_openSource"
            android:textStyle="normal"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:maxLines="1"
            android:textSize="@dimen/textSizeSmall_openSource"/>
    </LinearLayout>
</LinearLayout>

并且在该布局的3个部分上设置了onClicklibraryCreatorlibraryDescription,以及libraryBottomContainer

我希望有人知道这里出了什么问题。

谢谢你的帮助。

共有3个答案

邢飞昂
2023-03-14

为了我:

android:background="?android:attr/selectableItemBackground"

终于成功了。请参阅项目背后的recyclerView/内容的背景,以及与recyclerView一起使用的连锁反应。

尉迟阳煦
2023-03-14

CardLayout只是ViewGroup的一个子类,因此设置:

android:background="?android:attr/selectableItemBackground"

应该能做到。

更新:

(看起来您正在尝试使用自定义波纹颜色。)

尝试使用具有自定义颜色的ripple drawable作为背景(我没有使用此选项,因此无法验证此行为。)请参阅:文档或此问题以帮助您开始。

仉宸
2023-03-14

假设您使用的是Material/Appcompat主题和Lollipop,我通过使CardView具有以下属性来实现这一点:

android:focusable="true"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
 类似资料:
  • 我写了一个react-native应用程序,我注意到,虽然按钮看起来像原生按钮时,点击,但他们不像一个行为(至少不像android按钮的行为)。 如果我自己使用api来管理触觉反馈,将导致全局禁用此选项的用户体验到不良行为 谢谢

  • 如何在回收者视图中收听触摸事件?我已经为视图持有者实现了click listener,但它可以在整个视图上工作。我在每个视图支架中都有一个图像视图,当用户单击图像视图时,我需要执行一个操作。 当前视图持有者代码。

  • 我已经被困在这个问题上几天了,真的需要一些帮助和理解如何用DiffUtil设置RecylerView(RV),似乎无论我尝试什么,我都无法让RV更新。我会浏览我所拥有的,希望有人能解释一下我做错了什么。 应用程序启动 创建视图模型, 然后在ViewModel中填充LiveDataList。 LayoutManager和ListAdapter应用于RV 为什么在LiveDataList中添加或删除一

  • 我有一个滑动删除,它绘制了一个背景(很像收件箱应用程序),由ItemTouchHelper实现,方法是覆盖onChilDraw方法并在提供的画布上绘制一个矩形: 上面调用的删除方法位于适配器中: 背景画得很好,但是当调用notefyItemRemved时(根据调试器先生的说法),RecyclerView首先删除我漂亮的绿色背景,然后将两个相邻的项目推到一起。 我希望它在这样做的时候保持背景(就像收

  • 我正在学习Android和目前的回收器视图,所以在这个例子中,我在单击播放按钮时播放特定的原始声音文件,然后在完成后释放它。我可以认真地使用一些关于最佳实践的指针,但是因为我有一些问题和疑问: 我有一个过渡状态的问题,所以如果我按播放非常快,我会得到一个IllegalStateException,可能是因为试图释放一个已经发布的播放器。 显然,我也应该在发布后nullify并在之前进行null检查