Android 8 の端末で遭遇した現象の対処法についてです。
Intent
を使って ScrollView
を実装している Activity
を開くと、少しだけスクロールした状態で表示されるという現象が発生しておりました。
特にそれが原因で妙な動作になる、ということはなかったのですが、気になったので修正することにしました。
今回参考にさせていただいた記事はこちらから。
Android View が更新されるとスクロール位置が変わってしまう!?|グルーヴであなたのビジネスは加速する
https://ameblo.jp/hero-design/entry-12294755729.html
上記のサイトでは、Admob で広告を表示したタイミングでページが勝手にスクロールされる現象が発生していたとのことでした。
対処方法ですが、ScrollView
内の要素に android:descendantFocusability="blocksDescendants"
を追加するだけでした。
サンプルコードは下記のとおりです。
<ScrollView xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView" android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:descendantFocusability="blocksDescendants"> ......... </LinearLayout> </ScrollView>
サンプルコードでは ScrollView
のすぐ下の要素の LinearLayout
に追加しています。
こちらを追加して実機で実行したところ、妙なスクロールが発生しなくなりました!
以前 Activity
内で scrollView.fullScroll(ScrollView.FOCUS_UP);
で一番上にスクロールする、という処理を追加してもダメだったので、解消できてよかったです。
以上、Activity
を開いた際にページが勝手にスクロールされる現象の対処法についてでした。
ご参考になれば幸いです。