1

私の問題は、smoothScrollToPositionFromTopメソッドが期間パラメーターを無視することです。

API > 10 のメソッドを使用しようとしています

listView.smoothScrollToPositionFromTop(position, listView.getHeight() - ROW_HEIGHT, 100);

私が期待していること:コンテンツの高さを100ミリ秒で一番下までスクロールします。

私が得るもの:それは一番下までスクロールしますが、私の期間パラメータを無視します。

10 または 100 または 1000 を設定すると、同時にスクロールします。

詳細が必要な場合は、必要な詳細を正確にお伝えください。更新します。

UPD: 持続時間が長い (私は 11500 を試します) とうまく動作し、本当に長かったです。しかし、300以下に設定すると、とにかく〜1000のようにスクロールします。私のリストビューの行は約100以上です。

4

2 に答える 2

1

この問題が発生しました。AbsListView にバグがあり、Android が期間パラメーターを尊重するのに十分な速さでビューを描画できないようになっているようです: https://code.google.com/p/android/issues/detail?id=66744

SmoothScrollToPositionFromTop は、少数のビューに沿って移動する場合にうまく機能するため、ListView をスクロールしたい場所の x アイテム内に移動し、最後のビットをスクロールしてモーションをシミュレートしました。

たとえば、大きなリストがあり、ボタンのクリックで上にスクロールできるようにしたいと考えていました。以下のコードでは、リストのどこまで下がっているかを確認し、必要に応じて上に調整します。次に、最後のビットをスクロールします。

if (listView != null && listView.getCount() > 0) {
    listView.post(new Runnable() {
        @Override
        public void run() {
            if (listView.getFirstVisiblePosition() > 20) {
                listView.setSelection(20);
            }
            listView.smoothScrollToPositionFromTop(0, 0, 300);
        }
    });
}
于 2014-08-20T00:28:25.813 に答える