2015-10-28 7 views
0

Я не могу прокрутить мой RecyclerView до конца. Он отрезал мой последний элемент, и я не знаю почему. У меня есть другой RecyclerView в моем проекте, который также кажется сломанным. Broken RecyclerViewНе удается прокрутить RecyclerView

Вот мой код макета:

<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:id="@+id/container" 
    android:padding="10dp"> 

    <android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/cv" 
     app:cardCornerRadius="2dp" 
     app:cardUseCompatPadding="true"> 

     <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="220dp" 
      android:orientation="horizontal"> 

(...) 

     </RelativeLayout> 
    </android.support.v7.widget.CardView> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/textView17" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="HISTORIA" 
     android:id="@+id/textView17" 
     android:layout_below="@+id/cv" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 

Другой сломанной RecyclerView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.praca_inz.Fragments.PetrolFragment"> 

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

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:scaleType="center" 
     android:src="@drawable/ic_editor_mode_edit" 
     android:layout_marginBottom="70dp" 
     android:layout_marginRight="15dp" 
     android:layout_marginEnd="15dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

</RelativeLayout> 

Любые идеи, потому что у меня нет никаких.

+1

Кажется, что ваш контент находится под слоем панели навигации. Использование CollapsingToolbarLayout в главном макете деятельности может вызвать эту проблему. –

+0

@oguzhand У меня нет CollapsingToolbar. Вот мой макет MainActivity: http://pastebin.com/mPwvb0up Когда я удалил последнюю строку в приложении ViewPager 'app: layout_behavior =" @ string/appbar_scrolling_view_behavior "' Я получаю его так: http://i.imgur.com /JYI0j18.gif RecyclerView выглядит хорошо, но все остальное «выше». – user3448282

+1

Моя ошибка, извините. Это был координаторLayout, а не CollapsingToolbarLayout. Есть некоторые ошибки, которые я видел при использовании. Один из них такой же, как ваш. Вы можете попытаться установить размер нижнего заполнения на высоте панели инструментов. Это может помочь в этом случае. –

ответ

0

Возникла проблема с ViewPager в макете MainActivity. Решение заключалось в том, чтобы установить параметр paddingTop, на 105dp (чтобы закрыть панель инструментов и TabLayout) и удалить параметр app:layout_behavior="@string/appbar_scrolling_view_behavior".

До:

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

После:

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="105dp"/> 

Спасибо @oguzhand, для направления меня к решению!

+0

Ну, вы определенно не должны полагаться на жестко закодированное дополнение для такого использования. Либо используйте атрибут 'LinearLayout', либо' layout_below' в 'RelativeLayout'. Я действительно не понимаю, как это устранило всю вашу проблему. –

0

Вы должны установить нижнее дно в своем RecyclerView. Например:

<android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/textView17" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:paddingBottom="20dp" /> 

Надеюсь, вам поможет, и извините за мой плохой английский.

+0

Спасибо за комментарий, но я решил проблему, добавив дополнение к ViewPager. Я верю, что ваше решение также работает, но мое немного более универсально, потому что в моем случае я устанавливал его один раз для каждого макета, но в вашем случае мне нужно было установить его в каждом RecyclerView. – user3448282

1

У вас проблема в вашем первом макете. В RelativeLayout элемент размера match_parent будет иметь тот же размер, что и сама компоновка. Это ваш RecyclerView. Однако он не находится в верхней части макета, так как он находится ниже @+id/textView17TextView. Таким образом, вам не хватает примерно 250 ~ 300 дп вашего RecyclerView (высота + карты + высота текста). Вероятно, в этом случае вы должны использовать вертикальный LinearLayout, для чего они предназначены. Просто установите высоту RecyclerView на 0 и вес на 1.

+0

Изменение типа макета на LinearLayout (вертикальное) мне не помогло. Также второй совет с размерами RecyclerView не работает. – user3448282

0

Добавить alignParentBottom = "true" в recyclerView. Это должно быть привязано к нижнему краю, а верх будет привязан к текстуру через тег layoutBelow, который у вас уже есть.

+0

К сожалению, это мне не помогло. – user3448282

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