これは簡単な作業ですが、リストビューを一番下までスクロールする方法はないようです。私が見つけたすべてのソリューションは、setSelection(lastItem)
メソッドのバリエーションを使用しています。これは、選択を最後の項目に設定するだけで、その下部までスクロールしません。
私の場合、空のリストビューがあります(長い 空のビュー ヘッダーセット)と私はそれの一番下までスクロールしたいと思います。
それで、それを行う方法はありますか?
編集:
だから、実用的なソリューションに興味がある人のために:
getListView().setSelectionFromTop(0, -mHeader.getHeight());
そして
getListView().scrollTo(mOffset)
これは(現在のスクロール位置に基づいて計算された)右オフセットでも機能しますが、予期しない結果になる場合があります。
リストビューを動的に更新しているときでも、リストビューを常に一番下にスクロールする場合は、リストビュー自体にこれらの属性を追加できます。
Android:stackFromBottom="true"
Android:transcriptMode="alwaysScroll"
次を使用
lv.setSelection(adapter.getCount() - 1);
プログラムでスクロールアニメーションを使用する場合は、次のコマンドを使用してリストの一番下まで簡単にスクロールできます。
listView.smoothScrollToPosition(adapter.getCount());
リストの一番上までスクロールするには、以下を使用します。
listView.smoothScrollToPosition(0);
これを試してください..それはあなたの問題を解決します、私はそれを試しました、そしてそれは素晴らしい働きをします。
listView.post(new Runnable(){
public void run() {
listView.setSelection(listView.getCount() - 1);
}});
private void scrollMyListViewToBottom() {
myListView.post(new Runnable() {
@Override
public void run() {
// Select the last row so it will scroll into view...
myListView.setSelection(myListAdapter.getCount() - 1);
}
});
}
私は同じ問題を抱えていました、これは私にとって最もうまくいきます
listView.setSelection(listView.getAdapter().getCount()-1);
myListView.smoothScrollToPosition(myListView.getCount() - 1)
を試してみてください。この方法では、最後の行を選択する必要はありません。さらに、スムーズで美しいスクロールが得られます! (:
以下を使用してみてください。
listview.setSelection(adapter.getCount()-1);
listViewにアダプタが設定されていない場合、子はありません。空のビューはListViewの子ではありません。