如何在BottomSheetDialogFragment中使用2 recyclerView

时间:2017-10-09 13:46:11

标签: java android

我的类从BottomSheetDialogFragment扩展,在这个布局中使用2个recyclerViews。但总是1个recyclerView可滚动和其他recyclerView不起作用。

ToList()

2 个答案:

答案 0 :(得分:3)

终于得到了答案。 在CoordinatorLayout中使用2 RecyclerView。

Two RecyclerViews in CoordinatorLayout

<android.support.design.widget.CoordinatorLayout
         android:id="@+id/mainBottomSheet"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/white">

         <android.support.v7.widget.RecyclerView
                  android:id="@+id/recyclerViewRight"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent" />

         <android.support.v7.widget.RecyclerView
                  android:id="@+id/recyclerViewLeft"
                  android:layout_width="200dp"
                  android:layout_height="match_parent" />

</android.support.design.widget.CoordinatorLayout>

请注意,其中一个RecyclerView必须是match_parent,另一个是任意大小。建议将match_parent提供给第一个RecyclerView。

这将导致两个RecyclerViews可滚动。

您可以使用下面的代码轻松地将RecyclerViews更改一半。

 WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            DisplayMetrics displayMetrics = new DisplayMetrics();
            windowManager.getDefaultDisplay().getMetrics(displayMetrics);
            deviceScreenUtilsWidth = displayMetrics.widthPixels;
recyclerViewLeft.getLayoutParams().width = deviceScreenUtilsWidth / 2;

答案 1 :(得分:0)

我的情况类似于此,但在我的情况下,第一个Recyclerview是水平的,第二个是垂直的。我无法直接滚动第二个。所以我按照以下方式解决了这个问题

<android.support.design.widget.CoordinatorLayout
      <android.support.v4.widget.NestedScrollView

      <android.support.v7.widget.RecyclerView
      <android.support.v7.widget.RecyclerView

并设置第二个recyclerview

     recycler.setNestedScrollingEnabled(false);