1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Android] ScrollViewのonScrollChangedコールバックが呼ばれない!

Posted at

めちゃハマりました。
ScrollViewを継承したクラスを作成したのですよね。

class MYScrollView(
    context: Context,
    attrs: AttributeSet? = null
) : ScrollView(context, attrs) {
    override fun onScrollChanged(l: Int, t: Int, oldl: Int, oldt: Int) {
        super.onScrollChanged(l, t, oldl, oldt)
    }
    // ...いろいろ
}

こんなのです。で、これをとりあえずAndroid Studioからアクティビティ一つだけのプロジェクトを作って、そこにこのViewを張り付けて動作確認したら、なんと onScrollChangedがコールバックされない!

まじ??一瞬目を疑いました。そこからググって色々な方法を試しましたが結局解決せず。
この方法は別のアプリでは動いていたんです。新規プロジェクトを作ったからといって動かないはずはない。

で、あれこれ調べてようやく解決しました。
原因は、Acitivtyのレイアウトに直接MyScrollViewを書いていたこと。
で、解決策はFragmentのレイアウトにMyScrollViewを書くこと。

でした。

。。。何を言っているかわからない。と思いますが、私も何を言っているのかよくわかっていません。なぜこれで動いたのか。なんてことは考えたくもないです。とにかく動いた。よかったよかった。

で、この問題、ScrollViewだけでなくRecyclerViewとかも同じようです。とにかくコールバックされたければFragmentにViewを配置すべし。ってことですかね。

教訓:動作確認用プロトでも、Fragmentは履かせましょう

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?