1. Tablelayout序言
在一个app中,Tabs 使不同视图和功能之间的切换变得简单。使用 tabs 将大量关联的数据或者选项划分成更易理解的分组,可以在不需要切换出当先上下文的情况下,有效的进行内容导航和内容组织。
Tablayout
继承自HorizontalScrollView
,用作页面切换指示器
这里给出一个相关Tablayout实现的效果图:
从效果图上可以看出,可以操作的属性有:设置tab属性,指示线的设置,tab的图标设置,超出屏幕滚动tab等
2. 简单使用
Tablayout
的常用属性如下:
tabGravity
fill,填满TabLayout;center,居中显示tabMode
fixed, 固定标签;scrollable,可滚动标签,个数较少的时候可 以使用fixed,如果标签超出了屏幕范围,设置为scrollable比较好tabMaxWidth
Tab的最大宽度tabIndicatorColor
底部滑动的线条的颜色,默认是colorAccenttabIndicatorHeight
底部滑动线条的高度tabPadding*
标签页的paddingtabBackground
标签页的背景tabTextAppearance
文本设置tabSelectedTextColor
选中字体颜色
Tablayout
常见方法如下:
- 构造方法 不显示滚动条,创建标签条就是下面滚来滚去的那个东东,获取自定义属性值
addTab
手动添加Tab页addOnTabSelectedListener
/removeOnTabSelectedListener
、clearOnTabSelectedListeners
添加/移除/清空Tab选择事件监听器newTab
创建Tab页getTabAt
通过index获取TabremoveTab
通过tab实例移除tabremoveTabAt
移除特定位置的tabremoveAllTabs
清空tabssetTabTextColors
设置tab的正常显示颜色和选中后颜色setupWithViewPager
通过ViewPager初始化TabLayoutshouldDelayChildPressedState
判断是否需要delay视图的press状态,一般无法滚动的视图直接返回false,可以滚动的视图看情况返回true或者falseaddView
添加TabItem,如果参数类型不是TabItem会报异常generateLayoutParams
默认生成属性值,防止TabItem没有定义android:layout_*而报异常
TabItem
属性:
text
:标签文字icon
:图标layout
:自定义布局
2.1 默认使用样式
- activity_main.xml布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.tablayoutusecase.defaultuse.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/colorPrimaryDark">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="一般用法"
android:textColor="#fff"
android:textSize="16sp"/>
</RelativeLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
- MainActivity修改:设置相关属性
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private String[] titles = new String[]{
"最新","热门","我的"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
tabLayout = (TabLayout) findViewById(R.id.tablayout);
// 创建Tab页
for(int i=