Android中TabLayout的使用

作者: 正阳Android | 来源:发表于2017-09-20 14:08 被阅读72次

    1.一般Tablayout的使用是和viewpager一起,可以轻松实现标签页的切换;不用我们自己再去监听事件,大大提高了编码效率

    使用步骤:

    首先,compile'com.android.support:design:25.3.1'导入依赖

    其次,在xml文件中使用如下代码

    <android.support.design.widget.TabLayout

    android:id="@+id/tl_tab"

    android:layout_width="match_parent"

    android:layout_height="@dimen/csc_dp_48"

    android:background="@color/csc_white"

    app:tabSelectedTextColor="@color/csc_orange"// 选中标签的字体颜色

    app:tabIndicatorColor="@color/csc_orange"// 指示器的颜色

    app:tabTextAppearance="@style/TabLayoutTextStyle"// style下写一个style,内部属性来一个textsisze即可;

    app:tabTextColor="@color/csc_low_black">

    </android.support.design.widget.TabLayout
    >

    <android.support.v4.view.ViewPager

    android:id="@+id/vp_content"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    在Activity中写一个集合或者数组保存标签页面

    public static finalString[]tabTitle=newString[]{"ss列表","xx列表"};

    private TabAdapter  tabAdapter;

    存放fragment的集合;

    在OnCreate()里面如下

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_goods_manager);

    ButterKnife.bind(this);

    tvCommonTitle.setText("商品管理");

    List fragments =newArrayList<>();

    for(inti =0; i

    if(i ==0) {

    fragments.add(GoodsFragment.newInstance(i +""));

    }else{

    fragments.add(ManagerFragment.newInstance(i +""));

    }

    }

    tabAdapter=newTabAdapter(getSupportFragmentManager(), fragments);

    //给ViewPager设置适配器

    pager.setAdapter(tabAdapter);

    //将TabLayout和ViewPager关联起来。

    tab.setupWithViewPager(pager);

    //通过反射设置指示器的宽度

    setUpIndicatorWidth();

    //设置可以滑动

    tab.setTabMode(TabLayout.MODE_FIXED);

    }

    /**

    *通过反射修改TabLayout Indicator的宽度(仅在Android 4.2及以上生效)

    */

    private voidsetUpIndicatorWidth() {

    try{

    Class tabLayoutClass =tab.getClass();

    Field tabStrip =null;

    try{

    tabStrip = tabLayoutClass.getDeclaredField("mTabStrip");

    tabStrip.setAccessible(true);

    }catch(NoSuchFieldException e) {

    e.printStackTrace();

    }

    LinearLayout layout =null;

    try{

    if(tabStrip !=null) {

    layout = (LinearLayout) tabStrip.get(tab);

    }

    for(inti =0; i < layout.getChildCount(); i++) {

    View child = layout.getChildAt(i);

    child.setPadding(0,0,0,0);

    LinearLayout.LayoutParams params =newLinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT,1);

    if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.JELLY_BEAN_MR1) {

    params.setMarginStart(UiUtils.dp2px(this,40));

    params.setMarginEnd(UiUtils.dp2px(this,40));

    }

    child.setLayoutParams(params);

    child.invalidate();

    }

    }catch(IllegalAccessException e) {

    e.printStackTrace();

    }

    }catch(Exception e) {

    e.printStackTrace();

    }

    }

    /**

    * tablayout的适配器

    */

    public classTabAdapterextendsFragmentPagerAdapter {

    privateListfragments;

    publicTabAdapter(FragmentManager fm, List fragments) {

    super(fm);

    this.fragments= fragments;

    }

    @Override

    publicFragment getItem(intposition) {

    returnfragments.get(position);

    }

    @Override

    public intgetCount() {

    returnfragments.size();

    }

    //设置tablayout标题

    @Override

    publicCharSequence getPageTitle(intposition) {

    returntabTitle[position];

    }

    }

    ok基本使用就是这样了,有错误的地方还望指正,谢谢


    相关文章

      网友评论

        本文标题:Android中TabLayout的使用

        本文链接:https://www.haomeiwen.com/subject/qpcosxtx.html