ScalableTabIndicator

Introduction: 可定制的 Indicator,结合 ViewPager 使用
More: Author   ReportBugs   DemoAPK   
Tags:
indicator-viewpager-

可定制的 Indicator,结合 ViewPager 使用,当然不通过 ViewPager 也可以用

Download

导入

gradle

compile 'com.jiang.android.scalabletabindicator:library:1.0.5'

Maven

<dependency>
  <groupId>com.jiang.android.scalabletabindicator</groupId>
  <artifactId>library</artifactId>
  <version>1.0.5</version>
  <type>pom</type>
</dependency>

用法

  • 导入项目
  compile 'com.jiang.android.scalabletabindicator:library:1.0.5'
  • 在 layout 中加入
   <com.jiang.android.scalabletabindicator.library.ScalableTabIndicator
          android:id="@+id/tabindicator"
          android:layout_width="match_parent"
          android:layout_height=""
          />
  • 在代码中加入
   mScalableTabIndicator = (ScalableTabIndicator) this.findViewById(R.id.tabindicator);
   /*可要可不要,如果你用到了 ViewPager 那就要,如果没用到 ViewPager 那就需要初始化的时候调用 mScalableTabIndicator.setCurrentIte m(0);然后 mScalableTabIndicator 需要实现 OnItemClickListener 接口 */
   mScalableTabIndicator.setViewPager(pager); 
  mScalableTabIndicator.addTab(//TODO...);
  //没有 ViewPager 的情况下使用下面这两句
    mScalableTabIndicator.setOnClickListener(new ScalableTabIndicator.OnItemClickListener() {
        @Override
         public void onClick(int position) {
        }
    });
  mScalableTabIndicator.setCurrentItem(0);
  • 最关键的一步,新建类继承 Tab 类,并重写相关的方法,在 demo 中有 TabView1,TabView2 和 TabView3,3 个例子。
      /**
       * 当前被选中
       */
      public abstract void actived();

      /**
       * 当前没有被选中
       */
      public abstract void dismissed();
      /**
       * 获取 view
       *
       * @return
       */
      public abstract View getView();
  • 注意: 要想知道 viewpager 回调的进度,可以通过
mScalableTabIndicator.setChangeListener(new ScalableTabIndicator.ChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
            @Override
            public void onPageSelected(int position) {
            }
            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

或者重写 Tab 类中的

 /**
     * 如若需要对 tab 的 item 元素进行相关操作,可重写这个方法
     *
     * @param positionOffset
     * @param positionOffsetPixels
     */
    public void onPageScrolled(float positionOffset, int positionOffsetPixels) {
    }

作者

推荐

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools