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).
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.
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:
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
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"
Je pense que vous devez insérer du contenu dans NestedScrollView et définir app:layout_behavior="@string/appbar_scrolling_view_behavior"
dans NestedScrollView.