繁体   English   中英

禁用某些RecyclerView项的单击/触摸

[英]Disable click/touch for some of a RecyclerView's items

有没有一种方法可以防止单击回收者视图中的特定项目? 已经尝试将视图设置为不可点击且未在视图持有器构造函数中启用该视图,但仍然没有运气。 当我触摸该项目的布局内的编辑文本时,它仍然可以单击并打开键盘。

首先十分感谢!

编辑:这与所引用主题中提出的问题不同。 我不想禁用整个回收视图。 只需从“回收者”视图中禁用某些项目即可。 我已经尝试了针对特定项目视图的参考主题中提供的解决方案,但是该解决方案不起作用。

完全阻止与单个项目中的任何内容进行交互的最简单方法可能是在其上方放置一个透明视图以拦截所有触摸事件。 为此,您可以将现有的itemView布局包装在FrameLayout然后在其之上添加另一个视图:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <!-- your itemView content here -->

    <View
        android:id="@+id/overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

onCreateViewHolder()内部,您可以将无操作点击侦听器分配给叠加层:

@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View itemView = inflater.inflate(R.layout.itemview, parent, false);
    MyViewHolder holder = new MyViewHolder(itemView);

    holder.overlay.setOnClickListener(v -> {});

    return holder;
}

现在,当您要禁用点击时,您可以致电

holder.overlay.setVisibility(View.VISIBLE);

而当您想禁用它们时,您可以致电

holder.overlay.setVisibility(View.GONE);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM