繁体   English   中英

我正在尝试在同一ViewPager上实现TitlePageIndicator和CirclePageIndicator

[英]I am trying to implement a TitlePageIndicator and a CirclePageIndicator on the same ViewPager

我正在尝试实现TitlePageIndicator和CirclePageIndicator来创建以下内容:

在此处输入图片说明

这是我的代码:

    pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
    ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
    pager.setAdapter(pageAdapter);

    TitlePageIndicator mWordIndicator = (TitlePageIndicator)findViewById(R.id.word_indicator);
    mWordIndicator.setViewPager(pager);
    mWordIndicator.setOnPageChangeListener(pageListener);

    CirclePageIndicator indicator = (CirclePageIndicator) findViewById(R.id.indicator);
    indicator.setViewPager(pager);
    indicator.setOnPageChangeListener(pageListener);

OnPageChangeListener pageListener = new OnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        // TODO Auto-generated method stub
        on_page_selected = position;
        titleText.setText(pageTitle.get(position));
        setPageImages();

    }

    @Override
    public void onPageScrolled(int position, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

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

    }
};

问题在于,一次只能使用一个指标。 如果我将其中一个注释掉,则另一个可以。 如果我都未评论,则只有CirclePageIndicator起作用。 您对我如何实现这一目标有任何建议吗? 还是有另一个我可以用来实现目标的库? 先感谢您!

PS-我在这里发现一个重复的问题,但没有给出答案。

为了解决此问题,您应该手动调用第一个PageIndicator的OnPageChangeListener回调函数。 喜欢:

pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);

CirclePageIndicator indicator = (CirclePageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(pager);


TitlePageIndicator mWordIndicator = (TitlePageIndicator)findViewById(R.id.word_indicator);
mWordIndicator.setViewPager(pager);
mWordIndicator.setOnPageChangeListener(pageListener);



OnPageChangeListener pageListener = new OnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        // TODO Auto-generated method stub
        on_page_selected = position;
        titleText.setText(pageTitle.get(position));
        setPageImages();

        indicator.onPageSelected(position);

    }

    @Override
    public void onPageScrolled(int position, float arg1, int arg2) {
        // TODO Auto-generated method stub
        indicator.onPageScrolled(position, arg1, arg2);
    }

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

        indicator.onPageScrollStateChanged(arg0);
    }
};

问题是指示器将其自身设置为viewPager的onPageChangedlistener以便更新自身。 如果实例化两个指示器,则只有第二个指示器将收到通知(因为ViewPager一次只能有一个侦听器)。 您应该稍微修改指标的代码,以将第二个页面指标设置为第一个指标的侦听器。 那时,您将监听器设置为第二个指示器的监听器。 希望它足够清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM