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联动

效果图

在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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值