zoukankan      html  css  js  c++  java
  • TabLayout + ViewPager使用

    xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_coupons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.tech.milin.milinsocial.ui.CouponsActivity">
    
        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            app:layout_collapseMode="pin"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/color_fff28149"
            app:tabSelectedTextColor="@color/color_fff28149"
            app:tabTextColor="@color/black" />
    
        <android.support.v4.view.ViewPager
            android:id="@+id/couponsContentPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        </android.support.v4.view.ViewPager>
    
    </LinearLayout>
    

      

    activity使用:

    public class CouponsActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
    
        @Bind(R.id.tabLayout)
        TabLayout mTabLayout;
    
        @Bind(R.id.couponsContentPager)
        ViewPager mCouponsContentPager;
    
        String [] tabTexts = {"未使用","已使用","已过期"};
    
        private List<Fragment> mFragmentList = new ArrayList<Fragment>();
        /**
         * tab的文字View.
         */
        private List<TextView> tabTextViewList;
        /**
         * tab的文字下划线
         */
        private List<TextView> tabTextBottomList;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_coupons);
    
            initView();
        }
    
        private void initView(){
            mFragmentList = new ArrayList<>();
            mFragmentList.add(new NotUseCouponsFragment());
            mFragmentList.add(new NotUseCouponsFragment());
            mFragmentList.add(new NotUseCouponsFragment());
            tabTextViewList = new ArrayList<>();
            tabTextBottomList = new ArrayList<>();
    
            ButterKnife.bind(this);
    
            mTabLayout.setTabMode(TabLayout.MODE_FIXED);//Mode有MODE_SCROLLABLE和MODE_FIXED   MODE_SCROLLABLE tab标签可以滑动,应用于很多标签时,显示不出的情况   MODE_FIXED是默认的MODE,它就像Weight一样,平分屏幕的长度。
            mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL);//TabGravity只有在FIXED的MODE下才会生效。
            mTabLayout.setSelectedTabIndicatorHeight(0);//隐藏tab下面的线条
    
            //缓存数量
            mCouponsContentPager.setOffscreenPageLimit(1);
            mCouponsContentPager.addOnPageChangeListener(this);
    
            AbFragmentPagerAdapter fragmentPagerAdapter = new AbFragmentPagerAdapter(getSupportFragmentManager(), tabTexts, mFragmentList);
            //viewpager加载adapter
            mCouponsContentPager.setAdapter(fragmentPagerAdapter);
    
            //TabLayout加载viewpager
            mTabLayout.setupWithViewPager(mCouponsContentPager);
    
            //为TabLayout添加tab名称
            for (int i = 0; i < tabTexts.length; i++) {
                TabLayout.Tab tab = mTabLayout.getTabAt(i);
                tab.setCustomView(getTabView(i));
            }
        }
    
        /**
         * 添加getTabView的方法,来进行自定义Tab的布局View
         *
         * @param position
         * @return
         */
        public View getTabView(int position) {
            View view = View.inflate(this, R.layout.item_custom_tabhost, null);//item_custom_tabhost自定义view的布局
            TextView tabText = (TextView) view.findViewById(R.id.tabText);
            TextView tabTextBottom = (TextView) view.findViewById(R.id.tabTextBottom);
            tabText.setText(tabTexts[position]);
            tabText.setTextSize(12);
            this.tabTextViewList.add(tabText);
            this.tabTextBottomList.add(tabTextBottom);
    
            //默认显示
            if (position == 0) {
                tabTextBottom.setBackgroundColor(getResources().getColor(R.color.color_fff28149));
                tabTextBottom.setVisibility(View.VISIBLE);
            } else {
                tabTextBottom.setVisibility(View.INVISIBLE);
            }
    
            if (position == 0) {
                tabText.setTextColor(getResources().getColor(R.color.color_fff28149));
            } else {
                tabText.setTextColor(getResources().getColor(R.color.black));
            }
            return view;
        }
    
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
            if (tabTextViewList == null) {
                return;
            }
            for (int i = 0; i < tabTextViewList.size(); i++) {
                TextView textView = tabTextViewList.get(i);
                TextView tabTextBottom = tabTextBottomList.get(i);
           //滑动viewpage然后设置tab颜色等。 if (position == i) { textView.setTextColor(getResources().getColor(R.color.color_fff28149)); tabTextBottom.setVisibility(View.VISIBLE); tabTextBottom.setTextColor(getResources().getColor(R.color.color_fff28149)); } else { textView.setTextColor(getResources().getColor(R.color.black)); tabTextBottom.setVisibility(View.INVISIBLE); } } } @Override public void onPageScrollStateChanged(int state) { } }
  • 相关阅读:
    #RunJS# 最少代码的瀑布流实现
    浏览器“Web Freer”,直接上twitter、facebook等国外的网站,附带去掉广告的方法。
    fixed固定块背景,滚动的时候却换背景
    成为一个顶级设计师的八大秘诀
    Font Awesome设计原理分析
    IE6PNG透明解决办法(2)js
    有趣的反汇编
    我这个用notepad的小可怜虫..
    自修改代码(SMC)技术学习
    lua绑定C++对象学习
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9555160.html
Copyright © 2011-2022 走看看