1.效果图
2.原理:TabLayout提供了一个水平的布局用来展示 Tabs 作为一级标签导航;用横向布局的recycleview作为第二级标签导航。
3.添加依赖: compile 'com.android.support:design:27.+ ‘
4.布局文件:
(1)主容器布局
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="30dp"
app:tabTextAppearance="@style/MyTabLayoutTextAppearanceInverse" // 设置标签的字体大小 在style文件里进行设置
app:tabIndicatorHeight="2dp" // 设置便签下划线的高度(厚度) 不设置的话,默认大小就可以 设置为0dp就是不显示下划线
app:tabIndicatorColor="#007aff" // 设置标签下划线的颜色
app:tabSelectedTextColor="#007aff" // 设置选中标签的字体的颜色
app:tabTextColor="@android:color/darker_gray" /> //设置未选中标签的字体的颜色
<android.support.v4.view.ViewPager
android:id="@+id/vpager"
android:layout_width="match_parent"
android:layout_height="200dp" />
(2)副容器布局
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/tv_tab"
android:layout_height="30dp"
android:layout_width="match_parent"
/>
。。。。。。
。。。。。。
</LinearLayout>
</ScrollView>
5.控制器部分代码:
(一)Tablayout 的控制器代码 参考我之前的一篇 Android TabLayout 实战 (一)
(二)RecycleView 的控制器部分代码
RecyclerView mRecyclerView = (RecyclerView)view.findViewById(R.id.tv_tab);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
mRecyclerView.setLayoutManager(linearLayoutManager);
//设置适配器
DataAdapter adapter = new DataAdapter();
adapter.setOnItemClickListener(new OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int position) {
。。。
。。。
adapter.notifyDataSetChanged();
}
});
mRecyclerView.setAdapter(adapter);
原理:为RecycleView添加监听事件,点击哪个标签获得position,从而刷新适配器。
6.Tips:因为博主的业务需求,二级导航标签是动态获取的数据,存在数据仅有一条的情况,这种情况就可以隐藏掉二级导航标签。