Android cardView后面的RecyclerView在不应单击时可单击

Android cardView后面的RecyclerView在不应单击时可单击,android,android-recyclerview,cardview,Android,Android Recyclerview,Cardview,我有一个cardview,它后面有一个“建议联系人”的回收视图,很像android中的默认拨号程序。CardView位于屏幕底部,占据了屏幕的70%左右,而RecyclerView则扩展了其高度以匹配父视图。滚动RecyclerView时,CardView将消失并显示整个列表 用户可以单击RecyclerView的一个项目直接拨打电话。问题在于,用户看不到的CardView后面的项目也可以单击 我怎样才能让RecyclerView项目只显示为可点击?(即,当cardView可见时) xml代码:

我有一个cardview,它后面有一个“建议联系人”的回收视图,很像android中的默认拨号程序。CardView位于屏幕底部,占据了屏幕的70%左右,而RecyclerView则扩展了其高度以匹配父视图。滚动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"
并在活动中创建空函数

public void nullClick(View view) {
}

无论您喜欢哪种方式。

我认为您指的是CardView后面的项目。即使如此,如果我将RecyclerView可见性设置为View.GONE,它将影响整个列表。如果我为RecyclerView下面的项目设置它。屏幕大小不同。我如何检查CardView是否与RecyclerView重叠?是否将
设置为onClickListener()
在你的
卡片视图上?如果没有,你应该这样做。整洁,我没有想到这一点,这正是我需要的!