第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ViewPager作為循環(huán)隊列/包裝

ViewPager作為循環(huán)隊列/包裝

藍山帝景 2019-08-26 15:46:21
ViewPager作為循環(huán)隊列/包裝我使用的是ViewPager與FragmentStatePagerAdapter讓一些片段之間的導航。比方說,我有三個片段:A,B和C。ViewPager最初顯示片段A,并允許您通過從右向左滑動,然后再次滑動到片段C來導航到片段B. 這允許以下導航路徑:A <--> B <--> C。我想要的是能夠在片段A上從左向右滑動并使ViewPager顯示片段C,即它表現(xiàn)為循環(huán)隊列并允許 ... --> C <--> A <--> B <--> C <--> A <-- ...我不希望片段在其他位置重復(即最終有三個以上的實例)。使用ViewPager可以實現(xiàn)這種包裝功能嗎?
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

這是一個沒有虛假頁面的解決方案,就像一個魅力:

public class CircularViewPagerHandler implements ViewPager.OnPageChangeListener {
    private ViewPager   mViewPager;
    private int         mCurrentPosition;
    private int         mScrollState;

    public CircularViewPagerHandler(final ViewPager viewPager) {
        mViewPager = viewPager;
    }

    @Override
    public void onPageSelected(final int position) {
        mCurrentPosition = position;
    }

    @Override
    public void onPageScrollStateChanged(final int state) {
        handleScrollState(state);
        mScrollState = state;
    }

    private void handleScrollState(final int state) {
        if (state == ViewPager.SCROLL_STATE_IDLE) {
            setNextItemIfNeeded();
        }
    }

    private void setNextItemIfNeeded() {
        if (!isScrollStateSettling()) {
            handleSetNextItem();
        }
    }

    private boolean isScrollStateSettling() {
        return mScrollState == ViewPager.SCROLL_STATE_SETTLING;
    }

    private void handleSetNextItem() {
        final int lastPosition = mViewPager.getAdapter().getCount() - 1;
        if(mCurrentPosition == 0) {
            mViewPager.setCurrentItem(lastPosition, false);
        } else if(mCurrentPosition == lastPosition) {
            mViewPager.setCurrentItem(0, false);
        }
    }

    @Override
    public void onPageScrolled(final int position, final float positionOffset, final int positionOffsetPixels) {
    }}

你只需要將它設置為你的ViewPager作為onPageChangeListener,就是這樣:( ** 現(xiàn)在不推薦 **檢查編輯說明)

viewPager.setOnPageChangeListener(new CircularViewPagerHandler(viewPager));

為了避免在ViewPager的“結尾”出現(xiàn)這種藍色光芒,您應該將此行應用于放置ViewPager的xml:

android:overScrollMode="never"

我們改進了上面的解決方案并在github上創(chuàng)建了一個小庫。隨意查看:)

編輯::根據(jù)@Bhavana注釋,只需使用addOnPageChangeListener而不是setOnPageChangeListener,因為不推薦使用以后版本。

 viewPager.addOnPageChangeListener(new CircularViewPagerHandler(viewPager));


查看完整回答
反對 回復 2019-08-26
  • 3 回答
  • 0 關注
  • 381 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號