複数のTextView、2つの静的なGridView、さらにはFrameLayoutを使ってFragmentを表示する、一連のLinearLayoutを持つNestedScrollViewを作成しました。これのすべての下に。NestedScrollViewのfullScroll(View.FOCUS_UP)が正しく機能していない
ユーザーが特定のポイントの下にスクロールした場合は、[戻る]ボタンを押すと、代わりの活動を終え、「scrollToTop」メソッドが呼び出されます。
public static void scrollToTop(final NestedScrollView scrollview) {
new Handler().postDelayed(new Runnable() {
public void run() {
scrollview.fullScroll(NestedScrollView.FOCUS_UP);
}
}, 200);
}
これが私のアプリの以前のバージョンで動作しますこれはPlayストアにあります。しかし今、Android Oreoをターゲットにして(サポートライブラリをバージョン26.0.2にアップデートする)、アプリを更新した後、上にスクロールするのではなく、NestedScrollViewの元のスクロール位置の下からスクロールを開始し、元の位置から停止するようです。だからちょうど奇妙な吃音として現れます。しかし、いくつかのポジションでは、トップにスクロールします(非常にまれで矛盾していますが)。実際にはスクロールして下に移動します。
私はビューのフォーカスを実験していますが、無駄です。例えば、私は静的なGridViewsがスクロール中にフォーカスを中断するかもしれないと読んでいます。私はまた、このような
scrollview.pageScroll(View.FOCUS_UP);
と
scrollview.smoothScrollTo(0,0);
として、スクロールアップするために、様々な異なる方法を試してみた。しかし、何も動作していないようにみえます。今回はサポートライブラリに何か問題がありますか?
追加 'アンドロイド:NestedScrollView'' '内部LinearLayout'これも' NestedScrollView.scrollToにdescendantFocusability = "blocksDescendants" '(0、0); ' –
これは実際には信じられないほど効果的です。上記のすべて(smoothScrollTo、pageScroll、fullScroll)は動作しませんが、scrollToは動作します。 smoothScrollToの滑らかさを犠牲にしなければなりませんが、以前よりも優れています。巨大な感謝! –