【Android】ページ遷移時にScrollViewが勝手にスクロールする

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 を開いた際にページが勝手にスクロールされる現象の対処法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG