我有View分頁器1000個項目放在片段。當片段被創建時,我需要將viewPager移動到第600個項目。下面是代碼我是如何做到的,但需要一些時間。Viewpager設置當前項目async
mPager.post(new Runnable() {
public void run() {
mPager.setCurrentItem(600, false);
}
});
是否有某種方法可以使其異步/平滑?
謝謝。
我有View分頁器1000個項目放在片段。當片段被創建時,我需要將viewPager移動到第600個項目。下面是代碼我是如何做到的,但需要一些時間。Viewpager設置當前項目async
mPager.post(new Runnable() {
public void run() {
mPager.setCurrentItem(600, false);
}
});
是否有某種方法可以使其異步/平滑?
謝謝。
由於您無法觸摸後臺線程中的UI元素,因此您可以通過設置ViewPager.offScreenPageLimit()
來加速更多項目。
比如我設置100,但你可以設置更多然後測試:
mPager.setOffscreenPageLimit(100);
還可以使用真正的setCurrentItem()
能讓它更順暢。像:
mPager.post(new Runnable() {
public void run() {
mPager.setCurrentItem(600, true);
}
});
阿爾斯蘭回答很好。
此外,如果您使用FragmentStatePagerAdapter,請注意此處提及的問題https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=37990。
當offScreenPageLimit()提到小於(NO_OF_ITEMS - 1)時,會發生這種情況。當用戶滑動時,會發生這些問題,因爲StatePagerAdapter在不再需要時刪除片段,並在需要時將其重新創建。在此適配器中,索引編制不正確。
謝謝,但我試過設置更大的OffscreenPageLimit,但它比以前慢得多。還設置布爾值爲真不幫助很好,因爲有600個項目添加它只是跳到第600項。 – viliam