web-dev-qa-db-fra.com

RecyclerView dans CoordinatorLayout, AppBarLayout Problème de défilement

J'ai ce code xml en fragment:

<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:id="@+id/coordinatorLayout"                      Android:fitsSystemWindows="true">
     <Android.support.design.widget.AppBarLayout
            Android:id="@+id/appBarLayout"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:theme="@style/AppTheme"
            app:elevation="0dp">
     <Android.support.design.widget.CollapsingToolbarLayout
                Android:layout_width="match_parent"
                Android:layout_height="300dp"
                app:layout_scrollFlags="scroll"
                Android:id="@+id/collapsingToolbarLayout"
                app:statusBarScrim="@color/bestColor">
    <LinearLayout></LinearLayout> <!--this elements hide then appbar is collapsed-->
            </Android.support.design.widget.CollapsingToolbarLayout>
    <LinearLayout>
    <ImageButton>
     Android:id="@+id/profile_header_trophies"
    </ImageButton><!-- this elements like a tab,visible if appbar collapsed-->
    </LinearLayout> 
        </Android.support.design.widget.AppBarLayout>

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

dans Java Class sur le jeu d'éléments ClickListener: 

@OnClick(R.id.profile_header_trophies)
    public void profile_header_trophies_clicked() {
        if (myProfile != null) {
            appBarLayout.setExpanded(false, false);
            if (myProfile.getBests().size() == 0) {
                profile_recyclerView.smoothScrollToPosition(3);
            } else {
                profile_recyclerView.smoothScrollToPosition(2 + 20);
                }
            }

Lorsque je clique sur ImageButton , mon RecyclerView défile vers la position, tout se présente bien. en bas, j'ai un mauvais défilement. Ma barre d’application commence à s’étendre, alors que mon recycleur a quelques éléments en haut (ils sont cachés lors du défilement).

enter image description here

Je pense que ce problème est la mise en comportement. Parce que si je fais d'abord défiler Recycler, AppBar ne commence pas à se développer, tandis que Recycler n'est pas riche en éléments supérieurs.

Merci pour vos réponses.

11
TazmanOne

avec cela, vous lui dites de "fusionner" le défilement de RecyclerView avec le défilement de son parent

app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

si j'ai bien compris, vous voulez avoir le comportement de défilement suivant:

  • si vous faites défiler en touchant en dehors de RecyclerView, il réduit la barre d’application.
  • si vous faites défiler en touchant dessus, il ignore le défilement de RecyclerView et réduit la barre d’application. Une fois la barre d’application réduite, elle défile à l’intérieur de la RecyclerView.

Pourriez-vous confirmer que c'est le comportement souhaité s'il vous plaît?

Dans ce cas, vous pouvez regarder cette réponse , cela vous aidera peut-être

4
AdricoM

Le mauvais défilement m'est arrivé une fois, c'était parce que j'utilisais RecyclerView dans une autre RecyclerView

Ainsi, lorsque j’essaie de faire défiler le contenu de la RecyclerView principale, j’ai eu ce problème.

Pour résoudre ce problème, j'ai ajouté ceci à RecyclerView:

recyclerView.setNestedScrollingEnabled(false);

Pour ce faire en XML, vous pouvez utiliser:

Android:nestedScrollingEnabled="false"
1
Amit Upadhyay

Je pense que vous devez insérer du contenu dans NestedScrollView et définir app:layout_behavior="@string/appbar_scrolling_view_behavior" dans NestedScrollView. 

0
Paparazi NDH