簡體   English   中英

在Android中的Viewpager上設置CirclePageIndicator

[英]Set CirclePageIndicator on Viewpager in android

我在分頁器上有4頁。 我只想在第1頁,第2頁,第3頁顯示3 CirclePageIndicator。第4頁不顯示CirclePageIndicator。

 mString1 = new int[]{R.string.text_guide_1, R.string.text_guide_2, R.string.text_guide_3, R.string.text_guide_10};
    mString2 = new int[]{R.string.text_guide_4, R.string.text_guide_5, R.string.text_guide_6, R.string.text_guide_11};
    mString3 = new int[]{R.string.text_guide_7, R.string.text_guide_8, R.string.text_guide_9, R.string.text_guide_12};
    GuideAdapter adapter = new GuideAdapter(this, getContext(), mString1, mString2, mString3, this);
    mPager.setAdapter(adapter);
    mPager.addOnPageChangeListener(onPageChangeListener);
    mCirclePageIndicator.setRadius(18);
    mCirclePageIndicator.setPageColor(getContext().getResources().getColor(android.R.color.white));
    mCirclePageIndicator.setFillColor(getContext().getResources().getColor(android.R.color.black));
    mCirclePageIndicator.setVisibility(View.VISIBLE);
    mCirclePageIndicator.setViewPager(mPager);

我的代碼。 它在Viewpager上顯示所有CirclePageIndicator。 請。 幫我!

文件適配器

public class GuideAdapter extends PagerAdapter {

private LayoutInflater mInflater;
private int[] mListString1;
private int[] mListString2;
private int[] mListString3;
private Context mContext;
private CustomDialog customDialog;

public GuideAdapter(CustomDialog customDialog, Context mContext, int[] mString1, int[] mString2, int[] mString3,PageClickListener callback) {
    this.customDialog = customDialog;
    this.mListString1 = mString1;
    this.mListString2 = mString2;
    this.mListString3 = mString3;
    this.mContext = mContext;
    mCallback = callback;

}

public interface PageClickListener {
    void onPageClick(int id);
}

private PageClickListener mCallback;


@Override
public int getCount() {
    return mListString1.length;
}


@Override
public boolean isViewFromObject(View view, Object object) {
    return view.equals(object);
}

@Override
public Object instantiateItem(ViewGroup container, final int position) {
    mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View imageLayout = mInflater.inflate(R.layout.item_guide, container, false);
    assert imageLayout != null;
    TextView text_1 = (TextView) imageLayout.findViewById(R.id.text_1);
    TextView text_2 = (TextView) imageLayout.findViewById(R.id.text_2);
    TextView text_3 = (TextView) imageLayout.findViewById(R.id.text_3);
    text_1.setText(mListString1[position]);
    text_2.setText(mListString2[position]);
    text_3.setText(mListString3[position]);
    text_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mCallback.onPageClick(position);
        }
    });
    text_2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mCallback.onPageClick(position);
        }
    });
    text_3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mCallback.onPageClick(position);
        }
    });

    container.addView(imageLayout, 0);
    return imageLayout;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    ((ViewPager) container).removeView((View) object);
}

請。 幫我!

覆蓋setOnPageChangeListener,並在最后一頁中隱藏circleIndicator。

mPager.setOnPageChangeListener(new OnPageChangeListener() {


@Override
public void onPageScrolled(int position, float arg1, int arg2) {

        if(position > 2) {
             //hide indicator

        } else if(position < 2) {
             //visible indicator
        }

    .
    .
    .

而不是添加onPageListener。 只需讓您的類實現ONpagechangelistener,然后使用一個字段來更新當前位置,然后在每次更新時檢查是否已更新位置等於數組長度(如果它只是忽略了circlepageindicator)。

暫無
暫無

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

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