1、不用说,先是依赖:
dependencies {
compile 'com.android.support:design:24.1.1'
}
2、在fragment中的布局
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
>
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="200dp"/>
3、创建MyFragment
public class MyFragment extends Fragment {
public MyFragment() {
}
public static BlankFragment newInstance(String text){
Bundle bundle = new Bundle();
bundle.putString("text",text);
MyFragment Fragment = new MyFragment();
Fragment.setArguments(bundle);
return Fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_blank, container, false);
}
//这里的R.layout.fragment_blank,为任意的xml Fragment,直接创建就好了。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView textView = (TextView) view.findViewById(R.id.pager_text);
textView.setText(getArguments().getString("text"));
//Fragment中控件的初始化以及设定。
}
}
4、Adapter适配器了;
public class MyAdapter extends FragmentPagerAdapter {
private String[] titles;
public MyAdapter(FragmentManager fm, String[] titles) {
super(fm);
this.titles = titles;
}
@Override
public Fragment getItem(int position) {
if(position==0){
return new FragmentPagerCourseAdapter();
}else if(position==1){
return new FragmentPagerLivingAdapter();
}
return new FragmentPagerCourseAdapter();
}
//这里面的Fragmentpager是各种类型的布局,在这里初始化。很精彩
@Override
public int getCount() {
return titles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
5、主代码
public class MainActivity extends AppCompatActivity {
private TabLayout tab;
private ViewPager pager;
private FragmentManager manager;
private FragmentTransaction transtion;
private FragmentLivingAdapter adapter;
private List<Fragment> flist;//将编辑好的布局放到集合中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*初始化界面*/
initViews();
flist = new ArrayList<Fragment>();
FragmentPagerLivingAdapter f1 = new FragmentPagerLivingAdapter();
FragmentPagerCourseAdapter f2=new FragmentPagerCourseAdapter();
flist.add(f1);
flist.add(f2);
String [] title={"课程","直播","线下课"};
manager = getFragmentManager();
adapter = new FragmentLivingAdapter(getFragmentManager(),title);
transtion = manager.beginTransaction();
transtion.commit();
pager.setAdapter(adapter);
tab.setupWithViewPager(pager);//将title和content关联
}
/*初始化界面*/
private void initViews() {
this.pager = (ViewPager) findViewById(R.id.pager);
this.tab = (TabLayout) findViewById(R.id.tab);
}
}
下面介绍一些TabLayout常用的属性:
app:tabTextColor="#ddd"//设置Tab标签的默认字体颜色:
app:tabSelectedTextColor="@color/colorAccent"//设置Tab标签选中的字体颜色:
app:tabIndicatorColor="@color/colorAccent"//设置指示器的颜色:
app:tabIndicatorHeight="5dp"//设置指示器的高度: (当值为0dp的时候指示器为隐藏状态)
app:tabIndicatorColor="@color/white"// 下方滚动的下划线颜色
lablayout中一个重要的属性: app:tabMaode
该属性有两个值:### scrollable,fixed
“fixed”
固定的,表示Tab标签不管为多少都是固定的,所以当标签很多的时候就会挤在一起,而且回造成标签上的文字显示不完整:
如下图:
app:tabMode=”fixed”
进一步的,可以查看他的文章:https://blog.csdn.net/qq_23179075/article/details/52471199