cardView 后面的 RecyclerView 在不应该点击的时候是可点击的

RecyclerView behind cardView is clickable when it should not be

我有一个cardview,后面有一个"Suggested Contacts"的recyclerview,很像android中的默认拨号器。 CardView 位于屏幕底部,占据了大约 70% 的屏幕,而 RecyclerView 将其高度扩展到 match_parent。当 RecyclerView 滚动时,CardView 消失并显示整个列表。

用户可以点击RecyclerView的其中一项直接进行调用。问题是用户不可见的 CardView 后面的项目也是可点击的。

我怎样才能让只显示为可点击的 RecyclerView 项目? (即当 cardView 可见时)

xml代码:

<ScrollView
        android:id="@+id/sv_suggested_contacts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="expandSuggestions">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_suggested_contacts"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </ScrollView>

    <androidx.cardview.widget.CardView
        android:id="@+id/dialer_card_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:cardElevation="8dp">

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

[...]

您可以将 (setVisibility(View.GONE) 项隐藏在回收器后面,或者将它们设置为不可点击

我假设您的要求是 cardview 应阻止所有点击,以便下面的项目不会正确点击。

如果是这种情况并且您确定 cardview 位于 recyclerview 之上,您只需在 cardview 上设置一个 onClickListener 并且在其中不执行任何操作。基本上是空点击。

或者您可以在 xml 中为 cardview 添加

android:onClick="nullClick"

并在 activity 中创建空函数

public void nullClick(View view) {
}

随你喜欢。