まず最初に、scrollクラスで使えるscrollToとscrollByの違いをよく分からず使っていたこと
について反省します。
この二つ、概念からして全く違う顔を持っていました。
自分は、あるボタンをクリックすると特定の場所までスクロールするような
機能を作っていたのですが、ここで上記の二つを使う機会が訪れました。
最初の時点では、scrollByを使っていたと思います。
sony製のsov35を使ってデバッグしていたのですが、ふとスクロールする場所によって
たどり着く位置がかなりずれていることに気づいてしまいました。
他の箇所も同様、上辺でクリックするとスクロールしたい箇所を飛びぬけて意図しない場所まで
スクロールしてしまう事態に。。。
恐らく最初にスクロールしたのを見ただけで正しいと判断を軽視してした模様。
androidDeveloperのリファレンスを読み直したところ、二つの相違点が浮かんできました。
scrollByは、現在いる地点からある長さ分スクロールをする。
scrollToは、元々のクリックされたボタンから、指定された長さの分だけスクロールをする。
要は絶対パスか相対パスでないかという差である。
scrollToが絶対パス、scrollByが相対パスのポジションにあたるものだと思います。
先ほどの自分は、scrollByを使っていたのでクリックした地点によって
到着位置がばらけていたものかと思われます。本来の目的に合った機能は
scrollToの方が持っていたとは思いもせずに。。。
それでもscrollToが完全正解というとそうじゃなく、例えるなら二重〇ではなく一重〇という感じです。
合っているのだけどコレジャナイ感がどうも前面に出てるけど、一応
到着点がずれることなくスクロールはできている。
ちょっといらつくが、画面の大きさによってスクロール位置がほんの少し気になる
といった感じ。
例えば、androidOneとかの画面が少し小さめな機種でデバッグをすると
少し到着位置が変わるけど、人気機種であるエクスペリアやネクサスでは
問題なし。それでも今の大衆的な機種に合わせておくのが一番無難そう。
長くなりましたが、クリック→意図した場所にジャンプしない方がまずいのでこちらの
scrollToを優先することにしました。
ほぼ自分の備忘録ですが、黒文字の部分だけでも忘れ防止の役に立ちそうなので置いておきます。