1.TabLayou+ViewPage xml 布局
2.TabLayou自己是没有该属性的,所以我们就需要用到自定义布局,创建一个xml布局,布局里编写一个TextView。
3.Activity代码
public class MainActivity extends AppCompatActivity {
private TabLayout mTabLayout;
private ViewPager mViewPage;
private ArrayList mList = new ArrayList<>();
private TextView inflate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabLayout = findViewById(R.id.main_tablayout);
mViewPage = findViewById(R.id.main_viewpage);
//添加标题
mList.add("全部");
mList.add("男装");
mList.add("女装");
//设置ViewPage适配器
mViewPage.setAdapter(new MyViewPageAdapter(getSupportFragmentManager()));
//设置Tablayout联动
mTabLayout.setupWithViewPager(mViewPage);
//获取当前选中Tablayout
TabLayout.Tab mTabLayoutTabAt = mTabLayout.getTabAt(mTabLayout.getSelectedTabPosition());
//设置text
inflate = (TextView) LayoutInflater.from(this).inflate(R.layout.text_layout, null);
//设置点击后的字体大小
inflate.setTextSize(20);
//设置点击的内容
inflate.setText(mTabLayoutTabAt.getText());
//获取布局
mTabLayoutTabAt.setCustomView(inflate);
//TabLayout点击选中监听事件
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
//选中的
@Override
public void onTabSelected(TabLayout.Tab tab) {
//设置点击的内容
inflate.setText(tab.getText());
//获取布局
tab.setCustomView(inflate);
}
//未选中的
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tab.setCustomView(null);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
//TabLayout适配器
private class MyViewPageAdapter extends FragmentStatePagerAdapter {
public MyViewPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
MyFragment myFragment = new MyFragment();
//Bundle 传值
Bundle bundle = new Bundle();
bundle.putString("tabName", mList.get(position));
myFragment.setArguments(bundle);
return myFragment;
}
@Override
public int getCount() {
return mList.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mList.get(position);
}
}
}
4.Fragment代码
public class MyFragment extends Fragment {
private View inflate;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
inflate = inflater.inflate(R.layout.fragment_my, container, false);
TextView mText = inflate.findViewById(R.id.my_text);
Bundle arguments = getArguments();
String tabName = arguments.getString("tabName");
mText.setText(tabName);
return inflate;
}
}



