私はこのxmlコードをフラグメントで持っています:
<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>
in Javaアイテムセットのクラス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);
}
}
ImageButtonをクリックすると、RecyclerViewが所定の位置にスクロールし、すべてが正常に表示されます。しかし、上に表示(スティッキー)しているAppBarLayoutセクション(ImageButton)に指を置き、下にドラッグすると、スクロールが悪くなります。リサイクラーの上部にいくつかの要素があります(スクロールすると非表示になります)。
この問題は行動を起こしていると思います。リサイクラーを最初にスクロールした場合、AppBarは展開を開始しませんが、リサイクラーは要素のリッチトップではありません。
あなたの答えをありがとう。
これにより、RecyclerViewのスクロールをその親のスクロールと「マージ」するように指示します。
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
私がよく理解しているなら、あなたは以下のスクロール動作をしたいと思うでしょう:
これが望ましい動作であることを確認できますか?
そのような場合、あなたは この答え を見るかもしれません、多分それは助けるでしょう
スクロール不良が発生したのは、別のRecyclerView
内でRecyclerView
を使用していたためです。
そのため、メインのRecyclerView
でコンテンツをスクロールしようとすると、この問題が発生しました。
その問題を解決するために、これをRecyclerView
に追加しました。
recyclerView.setNestedScrollingEnabled(false);
XMLでこれを行うには、次を使用できます。
Android:nestedScrollingEnabled="false"
ViewPager内でRecyclerViewを使用している場合は、次の行をViewPagerに追加します。Android:nestedScrollingEnabled="false"
それはあなたの問題を解決します。
NestedScrollViewでコンテンツをラップし、NestedScrollViewでapp:layout_behavior="@string/appbar_scrolling_view_behavior"
を設定する必要があると思います