2

Я хочу использовать CollapsingToolbarLayout с RecyclerView, например Whatsapp.Android RecyclerView с CollapsingToolbarLayout smooth scroll issue

Вот захваченное видео: https://sendvid.com/0oi2lxx5

Так что, когда я прокрутки вверх, это нормально, но когда я прокручиваю вниз это не гладко. Я хочу плавно прокручивать его с помощью RecyclerView.

Так вот мой profile_activity.xml:

<?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" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 
    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:id="@+id/profile_recyclerview" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:layout_below="@+id/profileactivity_appbar" /> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/profileactivity_appbar" 
     android:layout_width="match_parent" 
     android:layout_height="400dp" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme3.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/profileactivity_collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleMarginEnd="64dp"> 

      <ImageView 
       android:id="@+id/profileactivity_fullimage" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       android:fitsSystemWindows="true" 
       app:layout_collapseMode="parallax" 
       app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" /> 

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

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

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




    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     app:layout_anchor="@id/profileactivity_appbar" 
     app:layout_anchorGravity="bottom|right|end" 
     app:backgroundTint="@color/ColorPrimary" 
     android:src="@drawable/ic_create_white_48dp"/> 

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

Я использую:

compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:support-v4:23.4.0' 
compile 'com.android.support:recyclerview-v7:23.4.0' 
compile 'com.android.support:design:23.4.0' 

Как я могу это исправить?

+0

Drop ImageView в 'приложение: layout_scrollFlags', и посмотреть, если это решает проблему. Я думаю, что эти флаги противоречат 'app: layout_collapseMode' – Sevle

+0

, если вы попробуете прокрутить изображение по-своему так гладко, но я не могу прокручивать его с помощью recyclerview. я думаю, вы понимаете –

ответ

9

Хорошо, я объясню, как решить проблему, теперь мой макет супер гладкий;

На самом деле я не знаю, как его решить, но;

  • я удалил все android:fitsSystemWindows="true" атрибуты.
  • затем добавлен app:layout_scrollFlags="scroll|enterAlways" атрибут CollapsingToolbarLayout, ImageView и Toolbar.
  • И переместил все элементы до моего AppBarLayout в xml.

Мои activity_profile.xml как:

<?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/apk/res-auto" 
    android:id="@+id/profileCoordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<ProgressBar android:indeterminate="true" 
    android:layout_width="50dp" android:layout_height="50dp" 
    android:id="@+id/profile_activity_progress" 
    style="?android:attr/progressBarStyle" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:visibility="visible" /> 

<ProgressBar android:indeterminate="true" 
    android:layout_width="50dp" android:layout_height="50dp" 
    android:id="@+id/profile_activity_progress_edit" 
    style="?android:attr/progressBarStyle" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:visibility="gone" /> 


<include layout="@layout/content_profile_edit"/> 


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

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:visibility="gone" 
    android:layout_margin="@dimen/fab_margin" 
    app:layout_anchor="@+id/profileactivity_appbar" 
    app:layout_anchorGravity="bottom|right|end" 
    app:backgroundTint="@color/ColorPrimary" 
    android:src="@drawable/ic_create_white_48dp"/> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/profileactivity_appbar" 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:visibility="gone" 
    android:theme="@style/AppTheme3.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/profileactivity_collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:statusBarScrim="@color/ColorPrimaryDark" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginStart="48dp" 
     app:expandedTitleMarginEnd="64dp"> 

     <ImageView 
      android:id="@+id/profileactivity_fullimage" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:layout_collapseMode="parallax" /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:layout_collapseMode="pin" /> 

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

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

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

И в content_profile_edit.xml как:

<?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:id="@+id/profile_edit_layout" 
    android:layout_alignParentBottom="true" 
    android:visibility="gone" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

<android.support.v4.widget.NestedScrollView 
    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:id="@+id/profile_fragment_nested" 
    android:layout_height="match_parent" 
    android:padding="10dp"> 

    <!-- other views --> 

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

</RelativeLayout> 
+0

как вывести панель инструментов и tablayout –

+0

@BincyBaby Я не совсем понимаю вас, но вы можете проверить [выпуски cheesesquare] (https://github.com/chrisbanes/cheesesquare/releases) –

+0

Этот метод работает нормально, но если i хотел бы установить панель инструментов и tablayout, это не сработает –

1

У меня были проблемы с RecyclerView и CollapsingToolbarLayout (также не сваливались). Попробуйте использовать текущую версию 23.4. + Recyclerview, appcompat и design, если вы уже не делаете.

+0

Моя проблема не разрушает проблему. Если вы просматриваете видеоролик, когда я прокручиваю, касаясь коллапсирующего изображения, его супер гладкий. Но при прокрутке с recyclerview он не является гладким, как свернутое изображение. –

+0

Вы пробовали последнюю версию API? Может быть ошибка, которая была исправлена. Я пробовал ваш макет, и все работает нормально. – b00n12

+0

Я обновил все это до версии 23.4.0. Но та же проблема здесь. –

1
/** 
google solve this issue in 26 api level .I spent my whole day finally I found this answer. For Demo You create one android studio Scrolling Activity and do following changes upgrade all repository to 26 version and you will see this scrolling smoothly effect. 
**/ 

apply plugin: 'com.android.application' 

android { 
    **compileSdkVersion 26 
    buildToolsVersion "26.0.1"** 
    defaultConfig { 
     applicationId "com.example.sandeep.quantauser" 
     minSdkVersion 19 
     **targetSdkVersion 26** 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile files('libs/ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar') 
    compile files('libs/apache-jakarta-commons-net-1.4.1.jar') 
    compile 'com.theartofdev.edmodo:android-image-cropper:2.4.+' 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    testCompile 'junit:junit:4.12' 
    compile files('libs/itextpdf-5.4.0.jar') 
    **compile "com.android.support:support-core-utils:26.0.2" 
    compile 'com.android.support:design:26.0.2' 
    compile 'com.android.support:appcompat-v7:26.0.2' 
    compile 'com.android.support:cardview-v7:26.0.2'** 
} 

**allprojects { 
    repositories { 
     jcenter() 
     maven { 
      url "https://maven.google.com" 
     } 
    } 
}**