2016-03-12 3 views
1

Я хочу сделать прокрутку по LinearLayout и отключить прокрутку от RecyclerView. Я попытался изменить LinearLayout на NestedScrollView, но он не работает, и я не знаю почему.Как использовать RecyclerView с NestedScrollView?

Я пробовал this question, но это не работает. Содержимое в RecyclerView можно динамически загружать из WS и это бесконечный свиток. Экран зависал при обновлении содержимого в RecyclerView.

Я видел это из твиттера, как мы можем сделать этоhttps://drive.google.com/file/d/0B2JZggeoXKKFdG1ENmZEdWFIa0k/view?usp=sharing

Пример
Это мой простой экран моего приложения, я хочу прокрутки в red в настоящее время, и в настоящее время он прокручивает в «синий». Большое спасибо.

enter image description here

Код

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

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="160dp" 
    android:layout_margin="16dp" 
    android:background="#CCC" 
    android:id="@+id/imageView2" /> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Image caption" 
    android:background="#cbffa3" 
    android:padding="16dp" 
    android:id="@+id/textView8" /> 

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

</LinearLayout> 

Пытались, но не работает, содержание внутри RecyclerView не показывая

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

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

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="160dp" 
      android:layout_margin="16dp" 
      android:background="#CCC" 
      android:id="@+id/imageView2" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Image caption" 
      android:background="#cbffa3" 
      android:padding="16dp" 
      android:id="@+id/textView8" /> 

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

    </LinearLayout> 

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

Возможный дубликат [Как использовать RecyclerView внутри NestedScrollView?] (Http://stackoverflow.com/questions/31000081/how-to-use-recyclerview-inside-nestedscrollview) –

+0

Я обновил свой вопрос. – Marcus

ответ

2

Вариант 1: Используйте WRAP_CONTENT на RecyclerView и положить его в вид прокрутки вместе с другими виджетами. WRAP_CONTENT на RecyclerView работает только с 23.2. Это не рекомендуется, так как если вы используете WRAP_CONTENT, элементы RecyclerView не будут переработаны и это замедлит пользовательский интерфейс, когда контент будет длинным.

Вариант 2: Используйте типы для адаптера вида ресайклера и визуализируйте другой вид для индекса 0. This ответ показывает, как это сделать.

Вариант 3: Лучший вариант достижения такого рода опыта использования CollapsingToolbarLayout. Ваше верхнее содержимое рухнет при прокрутке вверх, и вы сможете прокрутить RecyclerView.

Вот один из способов тиражирования страницы Twitter с помощью CollapsingToolbarLayout.

<android.support.design.widget.CoordinatorLayout 
    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:layout_gravity="center" 
    android:fitsSystemWindows="false" 
    android:orientation="vertical" 
    app:statusBarBackground="@android:color/transparent"> 


    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="250dp" 
     android:fitsSystemWindows="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      > 

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_marginTop="?actionBarSize" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       android:src="@android:drawable/btn_star_big_on" 
       app:layout_collapseMode="none" 
       /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?actionBarSize" 
       android:background="@android:color/transparent" 
       android:elevation="5dp" 
       android:importantForAccessibility="yes" 
       app:layout_collapseMode="pin" 
       app:layout_scrollFlags="exitUntilCollapsed"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="?actionBarSize" 
        android:layout_centerHorizontal="true" 
        android:layout_gravity="center_horizontal" 
        android:background="@android:color/white" 
        android:text="Title Here" 
        /> 
      </android.support.v7.widget.Toolbar> 

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

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
</android.support.design.widget.CoordinatorLayout> 

Подробнее об этом находится в Android Блог - http://android-developers.blogspot.ca/2015/05/android-design-support-library.html (Выделите «CoordinatorLayout и приложение бар»)

+0

Я видел это из Twitter, как мы можем это сделать? https://drive.google.com/file/d/0B2JZggeoXKKFdG1ENmZEdWFIa0k/view?usp=sharing – Marcus

+0

Я обновил ответ. Вы можете достичь этого тремя разными способами – arsent

4

Я рекомендую вам добавить слушателя к виду прокрутки и если пользователь прокручивает вниз обнаружить , вы «спрятали» верх. Самый простой способ - использовать по умолчанию «Активность прокрутки», которая появляется в меню по умолчанию при создании нового действия в Android Studio с использованием Material Design.

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