0

Я хочу разместить два RecyclerViews внутри NestedScrollView, где должны быть отображены все элементы каждого RecyclerView:RecyclerViews внутри NestesScrollView

Desired:     Current: 
---------------------  --------------------- 
Fixed Header content  Fixed Header content 
---------------------  --------------------- 
<NestedScrollView>   <NestedScrollView> 
    EditText     EditText 
    EditText     EditText 
    ...       ... 
    <RecyclerView>    <RecyclerView> (scrollable> 
    Item 1      Item 1 
    Item 2      </RecyclerView> 
    ...      <RecyclerView> (scrollable> 
    Item N      Item 2 
    </RecyclerView>    </RecyclerView> 
    <RecyclerView>    </NestedScrollView> 
    Item 1      -------------------- 
    Item 2 
    ... 
    Item M 
    </RecyclerView> 
</NestedScrollView> 
---------------------- 

В настоящее время отображается только первый элемент каждого RecyclerView, и вы можете прокручивать вниз к другие предметы в этом ограниченном пространстве.

Я попытался установить RecyclerView.setNestedScrollingEnabled(false); с тем, что пока отображается только первый элемент RecyclerView, а RecyclerView больше не прокручивается.

Это все содержится в Фрагменте, который включен в действие, в котором размещен снимок BottomNavigationView.

макета активность:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout  
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/coordinatorLayoutMain" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context=".gui.activity.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
    android:id="@+id/appBarLayout" 
    app:elevation="0dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    </android.support.design.widget.AppBarLayout>--> 


    <FrameLayout 
    android:id="@+id/content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/bottomNavigationView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:background="@color/white" 
    app:itemTextColor="@color/bottom_navigation_item_color" 
    app:itemIconTint="@color/bottom_navigation_item_color" 
    app:menu="@menu/menu_bottom_main_activity" /> 

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

Фрагмент макета:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white"> 

    ... fixed header content ... 

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/header" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:isScrollContainer="true" 
      > 

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

      <TextView 
       android:id="@+id/catHeader1" 
       style="@style/Me.CatHeader" 
       android:layout_below="@id/dummy1" 
       android:text="@string/textCat1" /> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/recyclerView1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/catHeader1" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

      <TextView 
       android:id="@+id/action1" 
       style="@style/Me.AddText" 
       android:layout_below="@id/recyclerView1" 
       android:text="@string/action1" 
       android:visibility="gone" /> 

      <TextView 
       android:id="@+id/catHeader2" 
       style="@style/Me.CatHeader" 
       android:layout_below="@id/action1" 
       android:text="@string/textCat2" /> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/recyclerView2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/catHeader2" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

       <TextView 
       android:id="@+id/action2" 
       style="@style/Me.AddText" 
       android:layout_below="@id/recyclerView2" 
       android:text="@string/action2" 
       android:visibility="gone" /> 

     </RelativeLayout> 
    </android.support.v4.widget.NestedScrollView> 
</RelativeLayout> 

Оба RecyclerViews используют вертикальную LinearLayoutManager.

Использование match_parent на высоте RecyclerViews ничего не меняет.

версия AppCompat: 25.1.0

Что я упускаю, что я делаю неправильно?

ответ

0

Нашли проблему:

Корневой макет для элементов был layout_height = match_parent, установив его на layout_height = ?listPreferredItemHeight решить все.

+0

Почему вы используете 2 RecyclerView? –

+0

Оба RecyclerViews отображают очень разные контенты/элементы, где проще переносить их на два адаптера вместо того, чтобы обрабатывать их в одном. –

+0

Неправильная практика создания отдельных RecyclerView или ListView, есть ли у вас одинаковые типы данных или нет. –

 Смежные вопросы

  • Нет связанных вопросов^_^