android - 单击 RecyclerView 列表项

标签 android android-layout android-listview android-recyclerview

我有一个带有 LinearLayoutManagerAdapterRecyclerView:

@Override public int getItemViewType(int position) {
    return position == 0? R.layout.header : R.layout.item;
}

这是header.xml:

<View xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/header"
      android:layout_width="match_parent"
      android:layout_height="@dimen/header_height"
    />

我想要实现的是在 RecyclerView 中有一个,我可以在其中点击进入 RecyclerView 后面的任何内容。我尝试了很多组合以下属性无济于事:

      android:background="@android:color/transparent"
      android:background="@null"
      android:clickable="false"
      android:focusable="false"
      android:focusableInTouchMode="false"
      android:longClickable="false"

我怎样才能使列表中的第一个项目透明(允许触摸事件到它后面的任何东西),但让它仍然占据空间?

最佳答案

您可以将所有“漏洞”的 OnClickListener/OnTouchListener 设置为 RecyclerView 后面的 View 的父级,并委托(delegate)任何MotionEvent 和触摸事件到该父级 ViewGroup 的触摸处理。

TWiStErRob 更新:

class HeaderViewHolder extends RecyclerView.ViewHolder {
    public HeaderViewHolder(View view) {
        super(view);
        view.setOnTouchListener(new OnTouchListener() {
            @Override public boolean onTouch(View v, MotionEvent event) {
                // http://stackoverflow.com/questions/8121491/is-it-possible-to-add-a-scrollable-textview-to-a-listview
                v.getParent().requestDisallowInterceptTouchEvent(true); // needed for complex gestures
                // simple tap works without the above line as well
                return behindView.dispatchTouchEvent(event); // onTouchEvent won't work
            }
        });

XML 中没有什么特别需要的,只是简单的 View (问题中没有任何属性)。 v.getParent()RecyclerView,当您将手指放在“孔”上时,那个长方法会阻止它启动滚动手势。

我在列表中的“洞” View 也有一个半透明的背景,但这并不重要,因为我们是手工交付触摸。

关于android - 单击 RecyclerView 列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29066594/

相关文章:

android - 在我的情况下使用 LayoutInflater 时如何删除旧内容并显示新内容?

android - 使用 Universal Image Loader Android 在 ListView 中加载错误的图像?

java - 如何将ListActivity转换为AppCompatActivity

java - Android studio gradle 太长

Android facebook key 哈希

android-layout - 带有导航组件的单个事件 : how to handle different AppBar/Themes

android - 在webview准备好之前如何做进度条?

android - 设置背景可绘制时,ListView 项目不显示按下的背景颜色

java - 无法刷新 RecyclerView

android - 错误 : Unresolved reference: DaggerAppComponent