web-dev-qa-db-ja.com

リストビューを一番下までスクロールする方法は?

これは簡単な作業ですが、リストビューを一番下までスクロールする方法はないようです。私が見つけたすべてのソリューションは、setSelection(lastItem)メソッドのバリエーションを使用しています。これは、選択を最後の項目に設定するだけで、その下部までスクロールしません。

私の場合、空のリストビューがあります(長い 空のビュー ヘッダーセット)と私はそれの一番下までスクロールしたいと思います。

それで、それを行う方法はありますか?

編集:

だから、実用的なソリューションに興味がある人のために:

getListView().setSelectionFromTop(0, -mHeader.getHeight());

そして

getListView().scrollTo(mOffset)

これは(現在のスクロール位置に基づいて計算された)右オフセットでも機能しますが、予期しない結果になる場合があります。

14
Sver

リストビューを動的に更新しているときでも、リストビューを常に一番下にスクロールする場合は、リストビュー自体にこれらの属性を追加できます。

Android:stackFromBottom="true"
Android:transcriptMode="alwaysScroll"
38

次を使用

    lv.setSelection(adapter.getCount() - 1);
19
WISHY

プログラムでスクロールアニメーションを使用する場合は、次のコマンドを使用してリストの一番下まで簡単にスクロールできます。

listView.smoothScrollToPosition(adapter.getCount());

リストの一番上までスクロールするには、以下を使用します。

listView.smoothScrollToPosition(0);
11
Aryo

これを試してください..それはあなたの問題を解決します、私はそれを試しました、そしてそれは素晴らしい働きをします。

   listView.post(new Runnable(){
             public void run() {
             listView.setSelection(listView.getCount() - 1);
    }});
3
Steve
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);
        }
    });
}

それは私のために働いています

2
Pradip

私は同じ問題を抱えていました、これは私にとって最もうまくいきます

listView.setSelection(listView.getAdapter().getCount()-1);
1
Usman Shaikh

myListView.smoothScrollToPosition(myListView.getCount() - 1)を試してみてください。この方法では、最後の行を選択する必要はありません。さらに、スムーズで美しいスクロールが得られます! (:

1
Hunter S

以下を使用してみてください。

listview.setSelection(adapter.getCount()-1);

1
Pratik Dasa

listViewにアダプタが設定されていない場合、子はありません。空のビューはListViewの子ではありません。

0
pskink