Android design包 TabLayout

作者: 石头_起航 | 来源:发表于2018-06-21 10:45 被阅读49次

    android 5.0 的新特性 主要是配合ViewPager来使用,很多项目中都会用到这个东西,我就简单来记录一下。
    先写基本用吗 xml文件里面

    <android.support.design.widget.TabLayout
        android:id="@+id/tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.design.widget.TabLayout>
    
    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>
    

    然后在activity里面初始化控件,然后就是需要新建fragment 新建一个adapter,先上一个简单adapter的代码

    private ArrayList<Fragment> mArrayList;//存放fragment的集合
    private ArrayList<String> mStrings;//存放标题的集合
    
    public MyVpAdapter(FragmentManager fm, ArrayList<Fragment> mArrayList, ArrayList<String> mStrings) {
        super(fm);
        this.mArrayList = mArrayList;
        this.mStrings = mStrings;
    }
    
    @Override
    public Fragment getItem(int position) {
        return mArrayList.get(position);
    }
    
    @Override
    public int getCount() {
        return mArrayList == null ? 0 : mArrayList.size();//判空
    }
    
    @Override
    public CharSequence getPageTitle(int position) {
        return mStrings.get(position);//获取对应的标题,然后赋值给对应的tablaout
    

    fragment就是简单的继承一下fragment就可以了,然后填充一下布局,就没那么简单 代码不上了,然后就是activity的代码。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTabLayout = (TabLayout) findViewById(R.id.tab);
        mViewPager = (ViewPager) findViewById(R.id.vp);
        mStringArrayList = new ArrayList<>();
        mFragmentArrayList = new ArrayList<>();
        for (int i = 0; i < count; i++) {//造假数据
            int pages = i + 1;
            mStringArrayList.add("页面=----->" + pages);
        }
        for (int i = 0; i < mStringArrayList.size(); i++) {//把fragment添加到集合中
            Fragment fragment = new TestFragment();
            Bundle bundle = new Bundle();
            bundle.putString("key", mStringArrayList.get(i));
            fragment.setArguments(bundle);
            mFragmentArrayList.add(fragment);
        }
        MyVpAdapter myVpAdapter = new MyVpAdapter(getSupportFragmentManager(), mFragmentArrayList, mStringArrayList);
        mViewPager.setAdapter(myVpAdapter);//给viewpager添加适配器
        mTabLayout.setupWithViewPager(mViewPager);//tablayout和viewpager建立联系,,这个很重要
        mTabLayout.setSelectedTabIndicatorHeight(2);//设置tablayout底部滑标的高度
        mTabLayout.setSelectedTabIndicatorColor(Color.YELLOW);//设置滑标颜色 现在是黄色
    

    // for (int i = 0; i < mTabLayout.getTabCount(); i++) {
    // TabLayout.Tab tb = mTabLayout.getTabAt(i);//获取对应位置的tab
    // tb.setIcon(R.mipmap.ic_launcher);//设置tab的图标
    // }
    //设置标题的正常颜色和选择颜色
    mTabLayout.setTabTextColors(Color.GREEN, Color.RED);
    //设置标题的背景色
    // mTabLayout.setBackgroundColor(Color.MAGENTA);
    }

    效果图.png

    是不是感觉很丑 并不是我们想要的那种效果,那么就在xml文件的tablyout里面添加一行代码

    <android.support.design.widget.TabLayout
        android:id="@+id/tab"
        android:layout_width="match_parent"
        app:tabMode="scrollable"//滑动
        android:layout_height="wrap_content"></android.support.design.widget.TabLayout>
    
    效果图2.png

    是不是好看多了 , 没那么丑了。还可以设置图片加文字 或者单纯的图片,注释掉的代码放开后,你就会发现是图片加文字的效果了。
    这里写的是一些简单的使用,基本上能够满足使用,骚操作的话问百度吧。

    相关文章

      网友评论

        本文标题:Android design包 TabLayout

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