ListView とその下に LinearLayout をフッターとして含む、かなり大きなレイアウトで作業しています。最初にこれを ScrollView にラップしてレイアウト全体をスクロール可能にしようとしましたが、ListView と ScrollView の両方がスクロール可能な機能を持っているため、互いに互換性がないために問題が発生しました。したがって、回避策は、LinearLayout を ListView のフッターとして含めることでした。
さて、LinearLayout には、ユーザーがクリックしてページの上部に戻ることができるさまざまな場所にボタンがあります。私がこれから得ている行動は、控えめに言っても奇妙です。
下にスクロールしすぎていなければ、ボタンは正常に機能します。ただし、少し下にスクロールしすぎると、ボタンをクリックすると (以前は機能していたのと同じボタンでも)、リストビューの上部ではなく、およそ半分までレイアウトがスクロールされます。
スクロールを行うメソッドは次のとおりです。かなり単純です。
public void backToTop(View view) {
lv = (ListView)findViewById(R.id.listview);
lv.smoothScrollToPosition(0);
}
このメソッドは、いずれかのボタンがクリックされるとトリガーされます。
「scrollTo(0, 0)」関数も使用しようとしましたが、何もできませんでした。
どんな助けでも大歓迎です!
**編集:さらにテストした後、スクロールが正しく機能していないように見えるポイントは、リストビューがページに表示されなくなったときのようです。スクロールするとすぐに、ボタンが正しく機能しなくなります。
編集2:解決済み。私の解決策:行を変更しました
lv.smoothScrollToPosition(0);
に:
lv.setSelected(0);
これにより、ユーザーが画面に配置した任意の位置にあるすべてのボタンに対して正しい動作が得られるようです。setSelected を使用しても、クリックイベントを自動的にトリガーすることを期待していた副作用はないようです。万歳!