PagerSlidingTabStrip

Introduction: 一款 android 指示器 TabLayout、PagerSlidingTabStrip,仿 Boss 直聘,带有红点未读提示
More: Author   ReportBugs   
Tags:

一款 android 指示器 TabLayout、PagerSlidingTabStrip,仿 Boss 直聘,带有红点未读提示

Example

Usage

Gradle

dependencies {
 //稳定版(推荐)没特殊需求建议使用官方 TabLayout 控件
 compile 'com.longsh:PagerSlidingTabStrip:1.0.0'
 //测试版
 compile 'com.longsh:PagerSlidingTabStrip:1.0.1'
}

使用

    ViewPager pager = (ViewPager) findViewById(R.id.pager);
    tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
    tabs.setViewPager(pager);
    //pager.setOffscreenPageLimit(6);
    //设置参数
    setTabsValue();

     //例:设置第三个 tab 小红点显示,item 从 0 开始计算,true 为显示,false 为隐藏,默认为全部隐藏
      //tabs.setMsgToast(2, true);

    //MyPagerAdapter 为普通的 FragmentPagerAdapter
    public class MyPagerAdapter extends FragmentPagerAdapter {...略}

设置参数 setTabsValue();

    private void setTabsValue() {
          DisplayMetrics dm = getResources().getDisplayMetrics();
          // 设置 Tab 底部选中的指示器 Indicator 的高度
          tabs.setIndicatorHeight(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2.5f, dm));
          // 设置 Tab 底部选中的指示器 Indicator 的颜色
          tabs.setIndicatorColorResource(R.color.colorPrimary);
          //设置指示器 Indicatorin 是否跟文本一样宽,默认 false
          tabs.setIndicatorinFollowerTv(false);
          //设置小红点提示,item 从 0 开始计算,true 为显示,false 为隐藏,默认为全部隐藏
      //    tabs.setMsgToast(2, true);
          //设置红点滑动到当前页面自动消失,默认为 true
          tabs.setMsgToastPager(true);
          //设置 Tab 标题文字的颜色
          //tabs.setTextColor(R.color.***);
          // 设置 Tab 标题文字的大小
          tabs.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 15, dm));
          // 设置选中的 Tab 文字的颜色
          tabs.setSelectedTextColorResource(R.color.colorPrimary);
          //设置 Tab 底部分割线的高度
          tabs.setUnderlineHeight(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1f, dm));
          //设置 Tab 底部分割线的颜色
          //tabs.setUnderlineColorResource(R.color.colorGray);
          // 设置点击某个 Tab 时的背景色,设置为 0 时取消背景色 tabs.setTabBackground(0);
      //        tabs.setTabBackground(R.drawable.bg_tab);
          tabs.setTabBackground(0);
          // 设置 Tab 是自动填充满屏幕的
          tabs.setShouldExpand(true);

          //设置标签是否需要滑动,多个 tab 文字不够一屏显示的时候使用,后面会改成内部自动判断-----------------------------------------//todo
         //必须设置,1.0.0 不需要设置这行
         tabs.setTabsScroll(true);
   }

XML 布局代码

 <com.longsh.longshlibrary.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

如果你需要监听 viewpager 的滑动状态 setOnPageChangeListener

    tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
           //if (position == 2) {
                //手动隐藏第二个小红点,tabs.setMsgToastPager(false);该方法为 false 时才需要手动隐藏。
                //tabs.setMsgToast(2, false);
           //}
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

使用参考类

使用参考类

Version: 1.0.1

//修复 1.0.0 文字自适应宽度 新增 tabs.setTabsScroll(true);设置标签是否需要滑动,多个 tab 文字不够一屏显示的时候使用 todo //后续有时间会弄成内部自动判断。

Version: 1.0.0

有其他需求可以给我提 Issues,我在 res/layout/布局里面设置了 android:maxLength="5",限制每个 tab 最多显示 5 个字符,如果超过了 5 个字符的请下载源码去掉这行。

Thanks

License


Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools