完全阻止与单个项目中的任何内容进行交互的最简单方法可能是在其上方放置一个透明视图以拦截所有触摸事件.为此,您可以将现有的itemView布局包装在FrameLayout中,然后在其之上添加另一个视图:
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
在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);