2

У меня есть два фрагмента, каждый со своим соответствующим списком RecyclerView. RecyclerView из каждого фрагмента может содержать много элементов. Таким образом, прокрутка будет в основном необходимой. Моя проблема заключается в том, как мне объединить и отобразить эти два фрагмента в один экран с помощью ScrollView, но в то же время, когда прокрутка RecyclerViews ведет себя как обычно (нелипкая, следует за прокруткой всего экрана).Android: Как отобразить два фрагмента с RecyclerView на одном экране

Спасибо.

EDIT: Моего файл макет

<?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" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.easyuni.courserecommender.ResultsActivity"> 

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <include 
       android:id="@+id/toolbar" 
       layout="@layout/toolbar" /> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:layout_below="@+id/toolbar"> 

       <FrameLayout 
        android:id="@+id/fragment_container_results_career" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" /> 

       <View 
        android:id="@+id/divider" 
        android:layout_width="fill_parent" 
        android:layout_height="1dp" 
        android:layout_below="@+id/fragment_container_results_career" 
        android:layout_marginTop="8dp" 
        android:layout_marginBottom="8dp" 
        android:background="@color/divider" /> 

       <FrameLayout 
        android:id="@+id/fragment_container_results_courses" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" /> 

      </LinearLayout> 

     </RelativeLayout> 

     <android.support.design.widget.NavigationView 
      android:id="@+id/navigation_view" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      app:itemIconTint="#333" 
      app:itemTextColor="#333" /> 

    </android.support.v4.widget.DrawerLayout> 

</RelativeLayout> 

Скриншот: (Обратите внимание на RecyclerView в верхних и нижних свитках индивидуальны) https://drive.google.com/file/d/0B-glHmJbVcwiVU41WVRHU3g2bkE/view

+0

Плохая практика иметь прокрутки в прокрутке - так как поведение может быть странным. Вам действительно нужен этот вид прокрутки? В любом случае, покажите часть своего кода, чтобы узнать, что вы уже пробовали. – yennsarah

+0

@ Ами Да, я понимаю, что это не очень хорошая практика. Я не могу помочь, поскольку у меня есть данные, которые нужно отображать в списках, поэтому я должен использовать RecyclerViews. Я упомянул ScrollView, потому что данные не будут отображаться полностью на одном экране. Или у вас есть какие-то другие предложения о том, как я должен это решить? Благодаря! – Tim

+0

Почему вы не можете использовать один RecyclerView с настраиваемыми строками или Gridlayout? Действительно ли нужно иметь два фрагмента? – yennsarah

ответ

2

Вы можете сделать как этот -

В ваш файл макета вашей деятельности, у вас должно быть два кадра для хранения вашего двух фрагментов.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/first_fragment_container" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"> 

    </FrameLayout> 

    <FrameLayout 
     android:id="@+id/second_fragment_container" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"> 

    </FrameLayout> 
</LinearLayout> 

Затем в методе вашей деятельности в OnCreate(), вы можете использовать класс FragmentManager для добавления фрагмента к FrameLayout.

getSupportFragmentManager().beginTransaction().add(R.id.first_fragment_container, new YourFirstFragment()).commit(); 
     getSupportFragmentManager().beginTransaction().add(R.id.second_fragment_container, new YourSecondFragment()).commit(); 
+0

Извините, но это на самом деле не полностью решает мою проблему. Фрагменты будут отображаться с использованием FrameLayouts, но RecyclerView в каждом прокрутке фрагментов отдельно. Я хочу, чтобы весь экран прокручивался как страница :( – Tim

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