tabLayout的使用
1)必须先fragment
2)必须先viewpager
3)把viewpager给tabLayout
4)使用fragments个数给tabLayout赋值tab
5)setOnTabSelectedListener 过时了,用addOnTabSelectedListener
6)初始化的时候需要在fragments,进行textview进行设置字体颜色,
public class MasterActivity extends AppCompatActivity { String TAG = "MasterActivity"; String titles[] = new String[]{"统计","在线","报警"}; TabLayout tabLayout_master; ViewPager vp_master; List<Fragment> fragmentList = new ArrayList<>(); int move_count = 4; int tab_count = 6; // List<String> tabs; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView( R.layout.activity_master); initView(); initFragments(); initMyPager(); initAction(); } private void initView() { tabLayout_master = this.findViewById(R.id.tabLayout_master); vp_master = this.findViewById(R.id.vp_master); } private void initFragments(){ TotalFragment totalFragment = new TotalFragment(); OnLineFragment onLineFragment = new OnLineFragment(); AlarmFragment alarmFragment = new AlarmFragment(); fragmentList.add(totalFragment); fragmentList.add(onLineFragment); fragmentList.add(alarmFragment); } private void initMyPager() { vp_master.setAdapter(new MyPageAdapter(getSupportFragmentManager())); tabLayout_master.setupWithViewPager(vp_master); for(int i=0;i<fragmentList.size();i++){//自定义布局,需要初始化字体颜色,否则,就是tablayout自己的啦 TabLayout.Tab tab = tabLayout_master.getTabAt(i); TextView tv = (TextView) LayoutInflater.from(this).inflate(R.layout.tabview_main,tabLayout_master,false); tv.setText(titles[i]); if(i==0){ tv.setTextColor( getResources().getColor(R.color.green_complete) ); }else{ tv.setTextColor( getResources().getColor(R.color.gray) ); } tab.setCustomView(tv); } } private void initAction(){ tabLayout_master.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {//那个过时了,需要用这个 @Override public void onTabSelected(TabLayout.Tab tab) {//改变字体颜色,使用不同的selector不行,需要在这里使用,那个能是图片的 TextView tv = tab.getCustomView().findViewById(R.id.tab_master_tv); tv.setTextColor( getResources().getColor(R.color.green_complete) ); } @Override public void onTabUnselected(TabLayout.Tab tab) {//改变字体颜色,使用不同的selector不行,需要在这里使用 TextView tv = tab.getCustomView().findViewById(R.id.tab_master_tv); tv.setTextColor( getResources().getColor(R.color.gray) ); } @Override public void onTabReselected(TabLayout.Tab tab) { } }); tabLayout_master.setOnTabSelectedListener(); } private class MyPageAdapter extends FragmentPagerAdapter{ public MyPageAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { return fragmentList.get(i); } @Override public int getCount() { return fragmentList.size(); } } }
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@color/green_complete"></item> <item android:state_selected="false" android:drawable="@color/gray"></item> </selector>
textview被选中和不被选中