2016-06-13 15 views
3

私はViewPagerをリニアレイアウト内の項目として持っており、ビューページャの各項目はRecyclerViewを含んでいます。問題は、ページが最初に読み込まれるたびに、またはViewPagerでページを変更したときに、ビューが自動的にスクロールして、リサイクルビューの先頭が画面の上部に表示されるようになります。Androidはネストされたrecyclerviewの自動再配置を防止します

問題の.GIFはhereです。注意:私はスクロールダウンしていません、それは自動再配置です。

ビューが自動的にリサイクラビューの開始位置に再配置されないようにするにはどうすればよいですか?

答えて

16

この属性を線形レイアウトに追加できます。線形レイアウトは、あなたのscrollViewの直接の子です。

android:descendantFocusability="blocksDescendants" 
+0

これは子ビューのフォーカスを無効にします。そのため、もう触れたりクリックしたりすることはできません...この問題の提案や代替方法はありますか? –

+0

@Harshitありがとう、それは私の問題を解決する –

1

私はこの問題があなたのrecyclerviewではなくあなたのビューページにあると思います。 ViewPagerには、setOffscreenPageLimitというメソッドがあり、ビューページに添付されたフラグメントのオフスクリーンページを定義するために使用されます。あなたは3フラグメントがviewpagerに接続している場合は、ページャーページを変更するたびに、あなたはこの

viePager.setOffscreenPageLimit(3); 

のようにそのパラメータを設定することができ、そのフラグメント、まだ最後の状態になります。

+0

ありがとう、これは、スクロール位置をリセットするタブ間の切り替えを修正します! – tipi

5

私たちも同様の問題があります。我々は垂直RecyclerViewを持っています。この縦型の各項目RecyclerViewには、Android TVアプリのように水平RecyclerViewが含まれています。私たちは、自動スクロールが突然現れ23.4.0から24.0.0への支援のLIBSをアップグレード

。具体的には、Activityを開き、次に戻ると、垂直のRecyclerViewがスクロールアップし、現在の水平のRecyclerView行が切断されず、行が完全に表示されます。 android:descendantFocusability="blocksDescendants"修正問題の追加

しかし、私はまた、働く、another solutionを見つけました。我々の場合、垂直RecyclerViewFrameLayoutの内部に含まれています。このFrameLayoutandroid:focusableInTouchMode="true"を追加すると、問題は解決します。

third solution mentioned hereもあります。基本的には、子ども/内臓RecyclerViewsetFocusable(false)を呼び出しています。私はこれを試していない。ところで

は、open issue on the AOSPあります。

関連する問題