我正在使用smoothScrollBy()
滾動到ListView
中的特定位置。我希望在滾動完成ListView
時將其通知,以便將其與當用戶用手指滾動時觸發的當前onScrollStateChanged()
事件整合。Android smoothScrollTo not invoking onScrollStateChanged
目前我使用Timer
,它在光滑滾動的持續時間後運行100毫秒,但這不像我更喜歡的事件驅動。
我正在使用smoothScrollBy()
滾動到ListView
中的特定位置。我希望在滾動完成ListView
時將其通知,以便將其與當用戶用手指滾動時觸發的當前onScrollStateChanged()
事件整合。Android smoothScrollTo not invoking onScrollStateChanged
目前我使用Timer
,它在光滑滾動的持續時間後運行100毫秒,但這不像我更喜歡的事件驅動。
如果您已經爲您的listview實現了OnScrollListener,那麼您可以觀察ScrollState更改的時間。當您調用smoothScrollBy()時,將全局布爾(isScrolling)設置爲true,然後在OnScrollListener註冊SCROLL_STATE_IDLE的ScrollState後將其設置爲false。
sidebar1.smoothScrollToPositionFromTop(currentPosition, 0, 500);
isScrolling = true;
sidebar1.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
isScrolling = false;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
});
不幸的是'smoothScrollToPositionFromTop'出現在API 11中。 – styler1972
是的,但是您是不是隻是希望在滾動完成時收到通知?您應該能夠使用smoothScrollBy並將偵聽器與連續輪詢isScrolling狀態的while循環結合使用。 – saulpower
根據我的經驗,'smoothScrollBy()'不會調用'onScrollStateChanged()',並且此時我正在使用'Timer'來輪詢應該完成的輪詢。 – styler1972
我可以從我自己調試了'smoothScroll *'功能將不會觸發滾動狀態變化,因此呈現'OnScrollListener.onScrollStateChanged()'回調沒用確認。 – ohhorob