簡體   English   中英

如何通過Viewpager的setCurrentItem方法使箭頭不可見?

[英]How can I make my arrows invisible by setCurrentItem method of Viewpager?

在我的MainActivity的Oncreate中,添加以下代碼:

mDateAreaSlider.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int arg0) {

                    // Hide right arrow if reach last position 
                    if (arg0 == adapter.DateList.length - 1) {
                        mButtonNext.setVisibility(View.INVISIBLE);
                        mButtonBack.setVisibility(View.VISIBLE);
                    }

                    // Hide left arrow if reach first position 
                    else if (arg0 == 0) {
                        mButtonBack.setVisibility(View.INVISIBLE);
                        mButtonNext.setVisibility(View.VISIBLE);
                    }

                    // Else show both arrows
                    else {
                        mButtonBack.setVisibility(View.VISIBLE);
                        mButtonNext.setVisibility(View.VISIBLE);
                    }
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub
                ifSingding = true;
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub
            }
        });

然后在按鈕上單擊我添加以下代碼:

mDateAreaSlider.setCurrentItem(0);

但問題是它可以滑動到我選擇的頁面,但不會使我的箭頭不可見。

注意:這兩個箭頭是主布局中的ImageViews,不是膨脹布局。因此,它與適配器無關。

用以下代碼替換原始代碼:

final ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            if (position == adapter.DateList.length - 1) {
                    mButtonNext.setVisibility(View.INVISIBLE);
                    mButtonBack.setVisibility(View.VISIBLE);
                }

                // Hide left arrow if reach first position 
                else if (position == 0) {
                    mButtonBack.setVisibility(View.INVISIBLE);
                    mButtonNext.setVisibility(View.VISIBLE);
                }

                // Else show both arrows
                else {
                    mButtonBack.setVisibility(View.VISIBLE);
                    mButtonNext.setVisibility(View.VISIBLE);
                }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
};
mDateAreaSlider.addOnPageChangeListener(onPageChangeListener);

單擊按鈕執行此代碼

mDateAreaSlider.setCurrentItem(0);
mDateAreaSlider.post(new Runnable() {
        @Override
        public void run() {
            onPageChangeListener.onPageSelected(0);
        }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM