Android自定义下方导航Tab

Android自定义下方导航Tab

转载注明出处chendong_

基本大多数应用都会使用底部Tab的导航方式,实现底部Tab导航的方式很多,之前有TabHost,现在有TabLayout,之前一直用的是LinearLayout嵌套的方式或者RadioGroup,但是都相对麻烦,所以自定义了一个控件可以更方便的实现底部tab导航。

GitHub源码地址

TabHolder

compile ‘com.march.tabholder:tabholder:1.0.2’

更新日志

版本1.0.1(2016.3.29) 可以使用图片在左边,文字在右边;图片在上边,文字在下面两种模式;可以显示或者去除分割线;可以显示或者不显示文字

版本1.0.2(2016.3.29) 实现与ViewPager联动

Android自定义下方导航Tab_第1张图片

在xml文件中使用

<com.march.tabholder.TabHolder  android:id="@+id/activity_tab_test_tabholder" android:layout_width="match_parent" android:layout_height="50dp" android:background="#ddd" //没有被选中时文字颜色 app:TabHolderNormalColor="#567" //选中时文字颜色 app:TabHolderSelectColor="#00f" //显示的类型,horizontal表示图片在文字左边,vertical表示图片在文字下边 app:TabHolderType="horizontal" //是否显示文字 app:TabHolderWithText="true" //是否显示分割线 app:TabHolderWithDivider="true" />

初始化

TabHolder mTabHolder = (TabHolder) findViewById(R.id.activity_tab_test_tabholder);

//添加tab
mTabHolder.addTab(R.drawable.camera_filter, R.drawable.camera_filter_press, "滤镜")
                .addTab(R.drawable.camera_record, R.drawable.camera_record_press, "记录")
                .addTab(R.drawable.camera_sticker, R.drawable.camera_sticker_pressed, "贴纸")
                .addTab(R.drawable.camera_sticker, R.drawable.camera_sticker_pressed, "贴纸");

//设置监听事件
mTabHolder.setOnItemSelectListener(new TabHolder.OnItemSelectListener() {
            @Override
            public void OnItemSelect(int preSelect, int currentSelect, TabView preView, TabView currentView) {
                Log.e("chendong", "上一个选择是 " + preSelect + " 当前选择是 " + currentSelect);
            }
});

与ViewPager联动

//给TabHolder设置ViewPager,是否平滑移动,监听
mTabHolder.setViewPager(vp, false, new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

APi

//停止自动切换,在使用下面的方法时会造成与自动切换的冲突,建议停用
public void setAutoToogle(boolean autoToogle)
//选中一个
public void select(int pos)
//不选中一个
public void unselect(int pos)
//切换一个
public void toogle(int pos)
//选中一个,上一个被选中的会置为不选中
mTabHolder.singleSelect(0)

你可能感兴趣的:(Android自定义下方导航Tab)