smoothScrollBy()
を呼び出しているListView
があります。 95%の確率で、smoothScrollTo()
は意図したとおりに動作します。ただし、意図した場所に到達しない場合があります。私はそれに同じ値を与えていることを確認しました。エラーが発生したときのスムーズなスクロールはそれほどスムーズではないことに気付きましたが、アプリケーションが実行している他のタスクで制御できるものはありません。
バックグラウンドで何が起こっているのかよくわかりませんが、おそらく原因はガベージコレクションです。
この状況では、95%の精度では不十分です。これらのインスタンスでListView
が正しい場所に確実に到達するように、何らかの修正メカニズムを実装する必要があります。
単にsmoothScrollBy()
を呼び出す以外に、view.smoothScrollBy(distance, time);
を使用するより良い方法はありますか?
これらのいくつかを試してください:
Listviewには独自のスクロールメカニズムがあります。コンテンツが追加されるとスクロールします。
リストビューの高さ(Android:layout_height)をmatch_parentまたはfill_parentに割り当てます。
作業スレッドでアダプタを割り当てる場合。スレッドでUIアクションを実行しないでください。
これらが問題を解決しない場合。アダプターをリストビューに割り当てるコードがある場合は、それを投稿してください。または関連するコード。
また、xmlレイアウトコード。
お役に立てれば。
タイミングの問題が原因の場合もあります。ビューがリストビューに追加されたときとその時間
view.smoothScrollBy(distance, time);
リストビューまたはUIを更新する必要はありません。したがって、ビューの投稿スレッドで特定の遅延を使用してこれを実行します。例えば。
view.postDelayed(new Runnable{
view.smoothScrollBy(distance, time);
},1000);