2016-06-07 1 views
0

У меня есть два простых вида recycler, которые я хочу показать прямо друг под другом. Вот мой макет:Recycler Просмотр ниже друг друга не отображается?

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

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

     <android.support.v7.widget.RecyclerView 
      android:layout_below="@id/navigation_header" 
      android:id="@+id/friends_list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

     <android.support.v7.widget.RecyclerView 
      android:layout_below="@id/friends_list" 
      android:id="@+id/followers_list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

    </RelativeLayout> 

У меня есть мой navigationHeader выше мой первый взгляд утилизатора называется friends_list, который прекрасно работает, и я могу видеть представление friends_list ресайклера, который имеет android:layout_height="wrap_content" но вид followers_list переработчика не кажется, чтобы показать еще хотя все содержимое моего friends_list показано на рисунке. Любые идеи, почему это не появляется? Благодаря!

+0

Использование wrap_content не будет работать. Вам придется изменить RelativeLayout на вертикальный LinearLayout и установить высоту RecyclerViews с использованием layout_weight из 1 и layout_height из 0dp для обоих. – Neil

+0

это может произойти, если вы задаете высоту, чтобы соответствовать родительскому элементу in'onCreateViewHolder', свернутому макету списка друзей recycleview –

+0

@Neil Я понимаю, что вы пытаетесь сказать, но я хочу, чтобы вид ресайлера 'friends_list' отображался ниже' followers_list' recycler. Если я устанавливаю вес в 1, то каждый занимает половину экрана, но если 'friends_list' не заполняется полностью, между большим и большим количеством пробелов между ним и' followers_list' – user1871869

ответ

3

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

Для, например, что вам нужно сделать что-то вроде этого: -

<android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

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

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

     <android.support.v7.widget.RecyclerView 
      android:layout_below="@id/navigation_header" 
      android:id="@+id/friends_list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

     <android.support.v7.widget.RecyclerView 
      android:layout_below="@id/friends_list" 
      android:id="@+id/followers_list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

    </RelativeLayout> 

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

Или вы можете также использовать LinearLayout с вертикальным выравниванием в вашем NestedScrollView.

* Примечание: - это будет работать только с точки зрения ресайклера выше 23.2.0

compile 'com.android.support:recyclerview-v7:23.2.0' 
+1

Довольно уверен, что это правильный ответ. – Neil

0

Вы должны установить высоту для recyclerview андроида обеспечить вес для просмотра для регулировки разных размеров экрана

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

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

    <android.support.v7.widget.RecyclerView 
     android:layout_below="@id/navigation_header" 
     android:id="@+id/friends_list" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:layout_weight="1"/> 

    <android.support.v7.widget.RecyclerView 
     android:layout_below="@id/friends_list" 
     android:id="@+id/followers_list" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:layout_weight="1"/> 

</RelativeLayout> 
+0

Что делать, если я не хочу жестко закодировать layout_height? Я бы предпочел не делать этого, потому что в зависимости от размера вида recycler я бы заблокировал определенное содержимое – user1871869

+0

, если вы не хотите жесткого кода layout_height, вы можете использовать set 'android: layout_height = "0dp" android: layout_weight = "1" ' вместо. это отрегулирует высоту. – SaravInfern

0
<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

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

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/friends_list" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"/> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/followers_list" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"/> 

    </LinearLayout> 
0

Поскольку высота первого RecyclerView является wrap_content, ваш второй RecyclerView не будет показывать вверх, сначала RecyclerView будет занимать всю высоту вашего макета, если в нем больше предметов.

Чтобы решить проблему, используйте LinearLayout как корень и обеспечить равный layout_weight и layout_height="0dp" на оба ваших RecyclerView с.

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

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

    <android.support.v7.widget.RecyclerView 
     android:layout_below="@id/navigation_header" 
     android:id="@+id/friends_list" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"  
     android:layout_weight="1"/> <--- 

    <android.support.v7.widget.RecyclerView 
     android:layout_below="@id/friends_list" 
     android:id="@+id/followers_list" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> <--- 

</LinearLayout> 

Это покажет два RercyclerView с одинаковым пространством (высотой).

+0

взгляните на это тоже: http: // stackoverflow.com/questions/37977521/how-to-place-adview-below-the-recyclerview-please-see-details ПОЖАЛУЙСТА! –

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

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