将drawable添加到CirclePageIndicator

Posted

技术标签:

【中文标题】将drawable添加到CirclePageIndicator【英文标题】:Adding drawable to CirclePageIndicator 【发布时间】:2012-11-28 14:44:45 【问题描述】:

如何将图像添加到圆形页面指示符而不是添加颜色.. 我尝试添加图标页面指示符,但单击方法不起作用但我可以添加图像.. 在 circlepageIndicator 中,onclick 方法有效,但如何将可绘制的图像添加到 CIRCLEPAGE INDICATOR。以下是我的代码。

使用圆形页面指示符

       indicator  = (CirclePageIndicator)findViewById(R.id.indicatorMenu);
    indicator.setViewPager(pagerMenu);

    final float density1 = getResources().getDisplayMetrics().density;
    indicator.setRadius(5 * density1);
    indicator.setPageColor(0xFF000000);
    indicator.setFillColor(0xFF888888);
  indicator.setStrokeColor(0x880000FF);
    indicator.setStrokeWidth(2 * density1);

    //We set this on the indicator, NOT the pager
    indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener()              
        @Override
        public void onPageSelected(int position) 
         //   Toast.makeText(HomeSpizzaView.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
        //  pagerMenu.setCurrentItem(position, false);            
        
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 
        
        @Override
        public void onPageScrollStateChanged(int state)                
        
    );

    indicator.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 
            int currentItem = pagerMenu.getCurrentItem();
               int totalItems = pagerMenu.getAdapter().getCount();
               int nextItem = (currentItem + 1) % totalItems;
               pagerMenu.setCurrentItem(nextItem);
         Log.i("kkkkk", "getCurrentItem"+  nextItem);
         Toast.makeText(HomeSpizzaView.this, "getCurrentItem"+  nextItem, Toast.LENGTH_SHORT).show();
        
    );

使用的图标页面指示器

      mIndicator  = (IconPageIndicator)findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
    mIndicator.setLongClickable(true);

    //We set this on the indicator, NOT the pager
    mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener()              
        @Override
        public void onPageSelected(int position) 
            Toast.makeText(HomeSpizzaView.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
            mPager.setCurrentItem(position, false);    
        
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 
        
        @Override
        public void onPageScrollStateChanged(int state)                
        
    );


    mIndicator.setOnClickListener(new View.OnClickListener()
        @Override
        public void onClick(View v) 
            int currentItem = pagerMenu.getCurrentItem();
               int totalItems = pagerMenu.getAdapter().getCount();
               int nextItem = (currentItem + 1) % totalItems;
               pagerMenu.setCurrentItem(nextItem);
         Log.i("mmmmmmmmmmmm", "getCurrentItem"+  nextItem);
         Toast.makeText(HomeSpizzaView.this, "getCurrentItem"+  nextItem, Toast.LENGTH_SHORT).show();

        

    );

【问题讨论】:

【参考方案1】:

您可以使用 CirclePageIndicator 对象来自定义页面指示器。您可以设置图像或自定义颜色。 您还可以使用 XML 自定义这些指标,您可以从给定链接 android-ViewPagerIndicator's GitHub 中找到示例。 如果您想使用图标或图像,则可以使用以下课程SampleIconsDefault.java。来自给定的样本

【讨论】:

【参考方案2】:

我遇到了同样的问题,唯一的解决方案是创建自己的库来解决这个问题。

https://github.com/augustopicciani/DrawablePageIndicator

【讨论】:

以上是关于将drawable添加到CirclePageIndicator的主要内容,如果未能解决你的问题,请参考以下文章

将颜色过滤器添加到 Drawable 会更改使用相同 Drawable 的所有 Button

Android - 将图像添加到项目

将drawable设置为背景,以查看返回未找到的drawable

合并/转换textview与/到drawable

android以编程方式将自定义按钮添加到布局

Drawable 已经属于另一个所有者,但没有公开一个常量状态