public class TabLayout
extends HorizontalScrollView
java.lang.Object | |||||
↳ | android.view.View | ||||
↳ | android.view.ViewGroup | ||||
↳ | android.widget.FrameLayout | ||||
↳ | android.widget.HorizontalScrollView | ||||
↳ | android.support.design.widget.TabLayout |
TabLayout提供了一个水平布局来显示选项卡。
要通过TabLayout.Tab
实例完成要显示的选项卡的TabLayout.Tab
。 您通过newTab()
创建标签。 从那里您可以分别通过setText(int)
和setIcon(int)
更改标签的标签或图标。 要显示选项卡,您需要通过addTab(Tab)
方法之一将其添加到布局。 例如:
TabLayout tabLayout = ...; tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));You should set a listener via
setOnTabSelectedListener(OnTabSelectedListener)
to be notified when any tab's selection state has been changed.
您还可以通过使用TabItem
将项目添加到布局中的TabItem
。 一个示例用法如下所示:
<android.support.design.widget.TabLayout android:layout_height="wrap_content" android:layout_width="match_parent"> <android.support.design.widget.TabItem android:text="@string/tab_text"/> <android.support.design.widget.TabItem android:icon="@drawable/ic_android"/> </android.support.design.widget.TabLayout>
如果您将ViewPager
与此布局一起使用,则可以致电setupWithViewPager(ViewPager)
将两者连接在一起。 该布局将自动从PagerAdapter
的页面标题填充。
该视图还支持将其用作ViewPager装饰的一部分,并且可以直接将其添加到布局资源文件中的ViewPager中,如下所示:
<android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" /> </android.support.v4.view.ViewPager>
也可以看看:
Nested classes |
|
---|---|
interface |
TabLayout.OnTabSelectedListener 在选项卡的选择状态更改时调用回调接口。 |
class |
TabLayout.Tab 此布局中的选项卡。 |
class |
TabLayout.TabLayoutOnPageChangeListener 一个 |
class |
TabLayout.ViewPagerOnTabSelectedListener 一个 |
XML attributes |
|
---|---|
android.support.design:tabBackground |
Reference to a background to be applied to tabs. |
android.support.design:tabContentStart |
Position in the Y axis from the starting edge that tabs should be positioned from. |
android.support.design:tabGravity |
Gravity constant for tabs. |
android.support.design:tabIndicatorColor |
Color of the indicator used to show the currently selected tab. |
android.support.design:tabIndicatorHeight |
Height of the indicator used to show the currently selected tab. |
android.support.design:tabMaxWidth |
The maximum width for tabs. |
android.support.design:tabMinWidth |
The minimum width for tabs. |
android.support.design:tabMode |
The behavior mode for the Tabs in this layout 必须是下列常数值之一。 |
android.support.design:tabPadding |
The preferred padding along all edges of tabs. |
android.support.design:tabPaddingBottom |
The preferred padding along the bottom edge of tabs. |
android.support.design:tabPaddingEnd |
The preferred padding along the end edge of tabs. |
android.support.design:tabPaddingStart |
The preferred padding along the start edge of tabs. |
android.support.design:tabPaddingTop |
The preferred padding along the top edge of tabs. |
android.support.design:tabSelectedTextColor |
The text color to be applied to the currently selected tab. |
android.support.design:tabTextAppearance |
A reference to a TextAppearance style to be applied to tabs. |
android.support.design:tabTextColor |
The default text color to be applied to tabs. |
Inherited XML attributes |
|
---|---|
From class android.widget.HorizontalScrollView
|
|
From class android.widget.FrameLayout
|
|
From class android.view.ViewGroup
|
|
From class android.view.View
|
Constants |
|
---|---|
int |
GRAVITY_CENTER 重力用于布置 |
int |
GRAVITY_FILL 尽量使用重力来填充 |
int |
MODE_FIXED 固定标签可以同时显示所有标签,并且最适合用于标签之间快速旋转的内容。 |
int |
MODE_SCROLLABLE 可滚动选项卡在任何给定时刻显示选项卡的子集,并且可以包含更长的选项卡标签和更多选项卡。 |
Inherited constants |
---|
From class android.view.ViewGroup
|
From class android.view.View
|
Inherited fields |
---|
From class android.view.View
|
Public constructors |
|
---|---|
TabLayout(Context context) |
|
TabLayout(Context context, AttributeSet attrs) |
|
TabLayout(Context context, AttributeSet attrs, int defStyleAttr) |
Public methods |
|
---|---|
void |
addOnTabSelectedListener(TabLayout.OnTabSelectedListener listener) 添加一个 |
void |
addTab(TabLayout.Tab tab, boolean setSelected) 在此布局中添加一个选项卡。 |
void |
addTab(TabLayout.Tab tab, int position) 在此布局中添加一个选项卡。 |
void |
addTab(TabLayout.Tab tab) 在此布局中添加一个选项卡。 |
void |
addTab(TabLayout.Tab tab, int position, boolean setSelected) 在此布局中添加一个选项卡。 |
void |
addView(View child, int index) 添加子视图。 |
void |
addView(View child) 添加子视图。 |
void |
addView(View child, ViewGroup.LayoutParams params) 添加具有指定布局参数的子视图。 |
void |
addView(View child, int index, ViewGroup.LayoutParams params) 添加具有指定布局参数的子视图。 |
FrameLayout.LayoutParams |
generateLayoutParams(AttributeSet attrs) 根据提供的属性集返回一组新的布局参数。 |
int |
getSelectedTabPosition() 返回当前选定选项卡的位置。 |
TabLayout.Tab |
getTabAt(int index) 返回指定索引处的选项卡。 |
int |
getTabCount() 返回当前在操作栏中注册的选项卡数量。 |
int |
getTabGravity() 当前用于布置标签的重力。 |
int |
getTabMode() 返回此 |
ColorStateList |
getTabTextColors() 获取用于选项卡的不同状态(正常,选定)的文本颜色。 |
TabLayout.Tab |
newTab() 创建并返回一个新的 |
void |
removeAllTabs() 从操作栏中删除所有选项卡并取消选择当前选项卡。 |
void |
removeOnTabSelectedListener(TabLayout.OnTabSelectedListener listener) 删除指定 |
void |
removeTab(TabLayout.Tab tab) 从布局中删除一个选项卡。 |
void |
removeTabAt(int position) 从布局中删除一个选项卡。 |
void |
setOnTabSelectedListener(TabLayout.OnTabSelectedListener listener) 此方法已弃用。 使用 |
void |
setScrollPosition(int position, float positionOffset, boolean updateSelectedText) 设置选项卡的滚动位置。 |
void |
setSelectedTabIndicatorColor(int color) 设置当前选定选项卡的选项卡指示符的颜色。 |
void |
setSelectedTabIndicatorHeight(int height) 设置当前选定选项卡的选项卡指示符的高度。 |
void |
setTabGravity(int gravity) 设置选项卡布局时使用的重力。 |
void |
setTabMode(int mode) 在此布局中设置选项卡的行为模式。 |
void |
setTabTextColors(int normalColor, int selectedColor) 设置用于选项卡的不同状态(正常,选定)的文本颜色。 |
void |
setTabTextColors(ColorStateList textColor) 设置用于选项卡的不同状态(正常,选定)的文本颜色。 |
void |
setTabsFromPagerAdapter(PagerAdapter adapter) 此方法已弃用。 使用 |
void |
setupWithViewPager(ViewPager viewPager, boolean autoRefresh) |
void |
setupWithViewPager(ViewPager viewPager) |
boolean |
shouldDelayChildPressedState() 如果应该延迟此ViewGroup的子项或后代的按下状态,则返回true。 |
Protected methods |
|
---|---|
void |
onAttachedToWindow() 这在视图附加到窗口时被调用。 |
void |
onDetachedFromWindow() 这是在视图从窗口分离时调用的。 |
void |
onMeasure(int widthMeasureSpec, int heightMeasureSpec) 测量视图及其内容以确定测量宽度和测量高度。 |
Inherited methods |
|
---|---|
From class android.widget.HorizontalScrollView
|
|
From class android.widget.FrameLayout
|
|
From class android.view.ViewGroup
|
|
From class android.view.View
|
|
From class java.lang.Object
|
|
From interface android.view.ViewParent
|
|
From interface android.view.ViewManager
|
|
From interface android.graphics.drawable.Drawable.Callback
|
|
From interface android.view.KeyEvent.Callback
|
|
From interface android.view.accessibility.AccessibilityEventSource
|
引用要应用于制表符的背景。
可能是另一种资源的引用,其形式为“ @[+][package:]type/name
”或形式为“一个主题属性 ?[package:]type/name
”。
从标签应该从的起始边缘定位在Y轴上。
可能是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
标签的重力常数。
必须是下列常数值之一。
Constant | Value | 描述 |
---|---|---|
center | 1 | |
fill | 0 |
相关方法:
指标的颜色用于显示当前选定的选项卡。
可能是一个颜色值,形式为“ #rgb
”,“ #argb
”,“ #rrggbb#aarrggbb
”。
相关方法:
用于显示当前所选标签的指标高度。
可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
相关方法:
标签的最大宽度。
可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
标签的最小宽度。
可能是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
此布局中Tabs的行为模式
必须是下列常数值之一。
Constant | Value | 描述 |
---|---|---|
fixed | 1 | |
scrollable | 0 |
相关方法:
沿标签所有边缘的首选填充。
可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
沿标签底部边缘的首选填充。
可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
沿制表符的末端边缘的首选填充。
可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
沿制表符起始边缘的首选填充。
可能是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
沿制表符顶部边缘的首选填充。
可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。
要应用于当前选定选项卡的文本颜色。
可能是一个颜色值,形式为“ #rgb
”,“ #argb
”,“ #rrggbb#aarrggbb
”。
相关方法:
对要应用于制表符的TextAppearance样式的引用。
可能是另一种资源的引用,其形式为“ @[+][package:]type/name
”或形式为“一个主题属性 ?[package:]type/name
”。
要应用于选项卡的默认文本颜色。
可能是一个颜色值,形式为“ #rgb
”,“ #argb
”,“ #rrggbb#aarrggbb
”。
相关方法:
int GRAVITY_FILL
尽可能使用重力来填充TabLayout
。 此选项仅在与MODE_FIXED
使用时MODE_FIXED
。
常量值:0(0x00000000)
int MODE_FIXED
固定标签可以同时显示所有标签,并且最适合用于标签之间快速旋转的内容。 选项卡的最大数量受限于视图的宽度。 固定标签具有相同的宽度,基于最宽的标签标签。
也可以看看:
常数值:1(0x00000001)
int MODE_SCROLLABLE
可滚动选项卡在任何给定时刻显示选项卡的子集,并且可以包含更长的选项卡标签和更多选项卡。 当用户不需要直接比较标签标签时,它们最适合用于在触摸界面中浏览上下文。
也可以看看:
常量值:0(0x00000000)
TabLayout (Context context, AttributeSet attrs)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
TabLayout (Context context, AttributeSet attrs, int defStyleAttr)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
defStyleAttr |
int
|
void addOnTabSelectedListener (TabLayout.OnTabSelectedListener listener)
添加将在选项卡选择更改时调用的 TabLayout.OnTabSelectedListener
。
添加侦听器的组件在通过 removeOnTabSelectedListener(OnTabSelectedListener)
完成时应小心删除它。
Parameters | |
---|---|
listener |
TabLayout.OnTabSelectedListener : listener to add |
void addTab (TabLayout.Tab tab, boolean setSelected)
在此布局中添加一个选项卡。 该选项卡将添加到列表的末尾。
Parameters | |
---|---|
tab |
TabLayout.Tab : Tab to add |
setSelected |
boolean : True if the added tab should become the selected tab. |
void addTab (TabLayout.Tab tab, int position)
在此布局中添加一个选项卡。 该标签将插入position
。 如果这是要添加的第一个选项卡,它将成为选定的选项卡。
Parameters | |
---|---|
tab |
TabLayout.Tab : The tab to add |
position |
int : The new position of the tab |
void addTab (TabLayout.Tab tab)
在此布局中添加一个选项卡。 该选项卡将添加到列表的末尾。 如果这是要添加的第一个选项卡,它将成为选定的选项卡。
Parameters | |
---|---|
tab |
TabLayout.Tab : Tab to add |
void addTab (TabLayout.Tab tab, int position, boolean setSelected)
在此布局中添加一个选项卡。 该标签将被插入position
。
Parameters | |
---|---|
tab |
TabLayout.Tab : The tab to add |
position |
int : The new position of the tab |
setSelected |
boolean : True if the added tab should become the selected tab. |
void addView (View child, int index)
添加子视图。 如果没有设置布局参数,则此子视图的默认参数设置在该子级上。
注意:不要调用此方法 draw(android.graphics.Canvas)
, onDraw(android.graphics.Canvas)
, dispatchDraw(android.graphics.Canvas)
或任何相关方法。
Parameters | |
---|---|
child |
View : the child view to add |
index |
int : the position at which to add the child |
void addView (View child)
添加子视图。 如果没有设置布局参数,则此子视图的默认参数设置在该子级上。
注意:不要调用此方法 draw(android.graphics.Canvas)
, onDraw(android.graphics.Canvas)
, dispatchDraw(android.graphics.Canvas)
或任何相关方法。
Parameters | |
---|---|
child |
View : the child view to add |
void addView (View child, ViewGroup.LayoutParams params)
添加具有指定布局参数的子视图。
注意:不要调用此方法 draw(android.graphics.Canvas)
, onDraw(android.graphics.Canvas)
, dispatchDraw(android.graphics.Canvas)
或任何相关方法。
Parameters | |
---|---|
child |
View : the child view to add |
params |
ViewGroup.LayoutParams : the layout parameters to set on the child |
void addView (View child, int index, ViewGroup.LayoutParams params)
添加具有指定布局参数的子视图。
注意:不要调用此方法 draw(android.graphics.Canvas)
, onDraw(android.graphics.Canvas)
, dispatchDraw(android.graphics.Canvas)
或任何相关方法。
Parameters | |
---|---|
child |
View : the child view to add |
index |
int : the position at which to add the child or -1 to add last |
params |
ViewGroup.LayoutParams : the layout parameters to set on the child |
FrameLayout.LayoutParams generateLayoutParams (AttributeSet attrs)
根据提供的属性集返回一组新的布局参数。
Parameters | |
---|---|
attrs |
AttributeSet : the attributes to build the layout parameters from |
Returns | |
---|---|
FrameLayout.LayoutParams |
an instance of ViewGroup.LayoutParams or one of its descendants |
int getSelectedTabPosition ()
返回当前选定选项卡的位置。
Returns | |
---|---|
int |
selected tab position, or -1 if there isn't a selected tab. |
int getTabCount ()
返回当前在操作栏中注册的选项卡数量。
Returns | |
---|---|
int |
Tab count |
ColorStateList getTabTextColors ()
获取用于选项卡的不同状态(正常,选定)的文本颜色。
Returns | |
---|---|
ColorStateList |
TabLayout.Tab newTab ()
创建并返回一个新的TabLayout.Tab
。 您需要使用addTab(Tab)
或相关方法手动添加。
Returns | |
---|---|
TabLayout.Tab |
A new Tab |
也可以看看:
void removeAllTabs ()
从操作栏中删除所有选项卡并取消选择当前选项卡。
void removeOnTabSelectedListener (TabLayout.OnTabSelectedListener listener)
删除指定 TabLayout.OnTabSelectedListener
以前通过添加 addOnTabSelectedListener(OnTabSelectedListener)
。
Parameters | |
---|---|
listener |
TabLayout.OnTabSelectedListener : listener to remove |
void removeTab (TabLayout.Tab tab)
从布局中删除一个选项卡。 如果选择了删除的选项卡,则将取消选择该选项卡,如果存在,则会选择另一个选项卡。
Parameters | |
---|---|
tab |
TabLayout.Tab : The tab to remove |
void removeTabAt (int position)
从布局中删除一个选项卡。 如果选择了删除的选项卡,则将取消选择该选项卡,如果存在,则会选择另一个选项卡。
Parameters | |
---|---|
position |
int : Position of the tab to remove |
void setOnTabSelectedListener (TabLayout.OnTabSelectedListener listener)
此方法已弃用。
使用addOnTabSelectedListener(OnTabSelectedListener)
和removeOnTabSelectedListener(OnTabSelectedListener)
。
Parameters | |
---|---|
listener |
TabLayout.OnTabSelectedListener
|
void setScrollPosition (int position, float positionOffset, boolean updateSelectedText)
设置选项卡的滚动位置。 这对于将选项卡显示为滚动容器(如ViewPager
一部分时非常有用。
调用此方法不会更新选定的选项卡,它仅用于绘图目的。
Parameters | |
---|---|
position |
int : current scroll position |
positionOffset |
float : Value from [0, 1) indicating the offset from position . |
updateSelectedText |
boolean : Whether to update the text's selected state. |
void setSelectedTabIndicatorColor (int color)
设置当前选定选项卡的选项卡指示符的颜色。
相关XML属性:
Parameters | |
---|---|
color |
int : color to use for the indicator |
void setSelectedTabIndicatorHeight (int height)
设置当前选定选项卡的选项卡指示符的高度。
相关XML属性:
Parameters | |
---|---|
height |
int : height to use for the indicator in pixels |
void setTabGravity (int gravity)
设置选项卡布局时使用的重力。
相关XML属性:
Parameters | |
---|---|
gravity |
int : one of GRAVITY_CENTER or GRAVITY_FILL . |
void setTabMode (int mode)
在此布局中设置选项卡的行为模式。 有效的输入选项是:
MODE_FIXED
: Fixed tabs display all tabs concurrently and are best used with content that benefits from quick pivots between tabs.MODE_SCROLLABLE
: Scrollable tabs display a subset of tabs at any given moment, and can contain longer tab labels and a larger number of tabs. They are best used for browsing contexts in touch interfaces when users don’t need to directly compare the tab labels. This mode is commonly used with a ViewPager
.相关XML属性:
Parameters | |
---|---|
mode |
int : one of MODE_FIXED or MODE_SCROLLABLE . |
void setTabTextColors (int normalColor, int selectedColor)
设置用于选项卡的不同状态(正常,选定)的文本颜色。
相关XML属性:
Parameters | |
---|---|
normalColor |
int
|
selectedColor |
int
|
void setTabTextColors (ColorStateList textColor)
设置用于选项卡的不同状态(正常,选定)的文本颜色。
Parameters | |
---|---|
textColor |
ColorStateList
|
也可以看看:
void setTabsFromPagerAdapter (PagerAdapter adapter)
此方法已弃用。
使用setupWithViewPager(ViewPager)
将TabLayout与ViewPager链接在一起。 当使用该方法时, PagerAdapter
更改时,TabLayout将自动更新。
Parameters | |
---|---|
adapter |
PagerAdapter
|
void setupWithViewPager (ViewPager viewPager, boolean autoRefresh)
用 ViewPager
设置这个 TabLayout
的一站式商店。
这个方法会将给定的ViewPager和这个TabLayout连接在一起,这样一个中的变化会自动反映到另一个中。 这包括滚动状态更改和点击。 此布局中显示的选项卡将从ViewPager适配器的页面标题填充。
如果 autoRefresh
为 true
,在任何改变 PagerAdapter
将触发该布局从适配器的标题,以重新填充本身。
如果给定的ViewPager非空,它需要已经有一个 PagerAdapter
集合。
Parameters | |
---|---|
viewPager |
ViewPager : the ViewPager to link to, or null to clear any previous link |
autoRefresh |
boolean : whether this layout should refresh its contents if the given ViewPager's content changes |
void setupWithViewPager (ViewPager viewPager)
一站式商店设立这个 TabLayout
用 ViewPager
。
这与启用自动刷新的调用 setupWithViewPager(ViewPager, boolean)
相同。
Parameters | |
---|---|
viewPager |
ViewPager : the ViewPager to link to, or null to clear any previous link |
boolean shouldDelayChildPressedState ()
如果应该延迟此ViewGroup的子项或后代的按下状态,则返回true。 通常,这应该对可以滚动的容器(例如List)完成。 这可以防止在用户实际尝试滚动内容时出现按下状态。 出于兼容性原因,默认实现返回true。 不滚动的子类通常应该重写此方法并返回false。
Returns | |
---|---|
boolean |
void onAttachedToWindow ()
这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此功能保证在onDraw(android.graphics.Canvas)
之前onDraw(android.graphics.Canvas)
,但可能会在第一次onDraw之前的任何时候调用 - 包括onMeasure(int, int)
之前或之后。
void onDetachedFromWindow ()
这是在视图从窗口分离时调用的。 此时它不再有绘图表面。
void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)
调用, measure(int, int)
子类覆盖以提供其内容的准确和有效的度量。
合同:覆盖此方法时, 必须致电setMeasuredDimension(int, int)
以存储此视图的测量宽度和高度。 不这样做会触发IllegalStateException
,由measure(int, int)
引发。 调用超类' onMeasure(int, int)
是一种有效的用法。
Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)
以提供更好的内容度量。
如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()
和 getSuggestedMinimumWidth()
)。
Parameters | |
---|---|
widthMeasureSpec |
int : horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec . |
heightMeasureSpec |
int : vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec . |