belongs to Maven artifact com.android.support:design:27.1.0
TabLayout
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 provides a horizontal layout to display tabs.
Population of the tabs to display is
done through TabLayout.Tab
instances. You create tabs via newTab()
. From there you can
change the tab's label or icon via setText(int)
and setIcon(int)
respectively. To display the tab, you need to add it to the layout via one of the
addTab(Tab)
methods. For example:
TabLayout tabLayout = ...; tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));
setOnTabSelectedListener(OnTabSelectedListener)
to be
notified when any tab's selection state has been changed.
You can also add items to TabLayout in your layout through the use of TabItem
.
An example usage is like so:
<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 integration
If you're using a ViewPager
together
with this layout, you can call setupWithViewPager(ViewPager)
to link the two together.
This layout will be automatically populated from the PagerAdapter
's page titles.
This view also supports being used as part of a ViewPager's decor, and can be added directly to the ViewPager in a layout resource file like so:
<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>
See also:
Summary
Nested classes | |
---|---|
interface |
TabLayout.OnTabSelectedListener
Callback interface invoked when a tab's selection state changes. |
class |
TabLayout.Tab
A tab in this layout. |
class |
TabLayout.TabLayoutOnPageChangeListener
A |
class |
TabLayout.ViewPagerOnTabSelectedListener
A |
XML attributes | |
---|---|
TabLayout_tabBackground |
|
TabLayout_tabContentStart |
|
TabLayout_tabGravity |
|
TabLayout_tabIndicatorColor |
|
TabLayout_tabIndicatorHeight |
|
TabLayout_tabMaxWidth |
|
TabLayout_tabMinWidth |
|
TabLayout_tabMode |
|
TabLayout_tabPadding |
|
TabLayout_tabPaddingBottom |
|
TabLayout_tabPaddingEnd |
|
TabLayout_tabPaddingStart |
|
TabLayout_tabPaddingTop |
|
TabLayout_tabSelectedTextColor |
|
TabLayout_tabTextAppearance |
|
TabLayout_tabTextColor |
Constants | |
---|---|
int |
GRAVITY_CENTER
Gravity used to lay out the tabs in the center of the |
int |
GRAVITY_FILL
Gravity used to fill the |
int |
MODE_FIXED
Fixed tabs display all tabs concurrently and are best used with content that benefits from quick pivots between tabs. |
int |
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. |
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)
Add a |
void
|
addTab(TabLayout.Tab tab, boolean setSelected)
Add a tab to this layout. |
void
|
addTab(TabLayout.Tab tab, int position)
Add a tab to this layout. |
void
|
addTab(TabLayout.Tab tab)
Add a tab to this layout. |
void
|
addTab(TabLayout.Tab tab, int position, boolean setSelected)
Add a tab to this layout. |
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)
|
void
|
clearOnTabSelectedListeners()
Remove all previously added |
FrameLayout.LayoutParams
|
generateLayoutParams(AttributeSet attrs)
|
int
|
getSelectedTabPosition()
Returns the position of the current selected tab. |
TabLayout.Tab
|
getTabAt(int index)
Returns the tab at the specified index. |
int
|
getTabCount()
Returns the number of tabs currently registered with the action bar. |
int
|
getTabGravity()
The current gravity used for laying out tabs. |
int
|
getTabMode()
Returns the current mode used by this |
ColorStateList
|
getTabTextColors()
Gets the text colors for the different states (normal, selected) used for the tabs. |
TabLayout.Tab
|
newTab()
Create and return a new |
void
|
removeAllTabs()
Remove all tabs from the action bar and deselect the current tab. |
void
|
removeOnTabSelectedListener(TabLayout.OnTabSelectedListener listener)
Remove the given |
void
|
removeTab(TabLayout.Tab tab)
Remove a tab from the layout. |
void
|
removeTabAt(int position)
Remove a tab from the layout. |
void
|
setOnTabSelectedListener(TabLayout.OnTabSelectedListener listener)
This method was deprecated
in API level 26.1.0.
Use |
void
|
setScrollPosition(int position, float positionOffset, boolean updateSelectedText)
Set the scroll position of the tabs. |
void
|
setSelectedTabIndicatorColor(int color)
Sets the tab indicator's color for the currently selected tab. |
void
|
setSelectedTabIndicatorHeight(int height)
Sets the tab indicator's height for the currently selected tab. |
void
|
setTabGravity(int gravity)
Set the gravity to use when laying out the tabs. |
void
|
setTabMode(int mode)
Set the behavior mode for the Tabs in this layout. |
void
|
setTabTextColors(int normalColor, int selectedColor)
Sets the text colors for the different states (normal, selected) used for the tabs. |
void
|
setTabTextColors(ColorStateList textColor)
Sets the text colors for the different states (normal, selected) used for the tabs. |
void
|
setTabsFromPagerAdapter(PagerAdapter adapter)
This method was deprecated
in API level 23.4.0.
Use |
void
|
setupWithViewPager(ViewPager viewPager, boolean autoRefresh)
The one-stop shop for setting up this |
void
|
setupWithViewPager(ViewPager viewPager)
The one-stop shop for setting up this |
boolean
|
shouldDelayChildPressedState()
|
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
|
XML attributes
TabLayout_tabBackground
TabLayout_tabContentStart
TabLayout_tabGravity
Related methods:
TabLayout_tabIndicatorColor
Related methods:
TabLayout_tabIndicatorHeight
Related methods:
TabLayout_tabMaxWidth
TabLayout_tabMinWidth
TabLayout_tabMode
Related methods:
TabLayout_tabPadding
TabLayout_tabPaddingBottom
TabLayout_tabPaddingEnd
TabLayout_tabPaddingStart
TabLayout_tabPaddingTop
TabLayout_tabSelectedTextColor
Related methods:
TabLayout_tabTextAppearance
TabLayout_tabTextColor
Related methods:
Constants
GRAVITY_CENTER
int GRAVITY_CENTER
Gravity used to lay out the tabs in the center of the TabLayout
.
See also:
Constant Value: 1 (0x00000001)
GRAVITY_FILL
int GRAVITY_FILL
Gravity used to fill the TabLayout
as much as possible. This option only takes effect
when used with MODE_FIXED
.
See also:
Constant Value: 0 (0x00000000)
MODE_FIXED
int MODE_FIXED
Fixed tabs display all tabs concurrently and are best used with content that benefits from quick pivots between tabs. The maximum number of tabs is limited by the view’s width. Fixed tabs have equal width, based on the widest tab label.
See also:
Constant Value: 1 (0x00000001)
MODE_SCROLLABLE
int 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.
See also:
Constant Value: 0 (0x00000000)
Public constructors
TabLayout
TabLayout (Context context, AttributeSet attrs)
Parameters | |
---|---|
context |
Context |
attrs |
AttributeSet |
TabLayout
TabLayout (Context context, AttributeSet attrs, int defStyleAttr)
Parameters | |
---|---|
context |
Context |
attrs |
AttributeSet |
defStyleAttr |
int |
Public methods
addOnTabSelectedListener
void addOnTabSelectedListener (TabLayout.OnTabSelectedListener listener)
Add a TabLayout.OnTabSelectedListener
that will be invoked when tab selection
changes.
Components that add a listener should take care to remove it when finished via
removeOnTabSelectedListener(OnTabSelectedListener)
.
Parameters | |
---|---|
listener |
TabLayout.OnTabSelectedListener : listener to add
|
addTab
void addTab (TabLayout.Tab tab, boolean setSelected)
Add a tab to this layout. The tab will be added at the end of the list.
Parameters | |
---|---|
tab |
TabLayout.Tab : Tab to add |
setSelected |
boolean : True if the added tab should become the selected tab.
|
addTab
void addTab (TabLayout.Tab tab, int position)
Add a tab to this layout. The tab will be inserted at position
.
If this is the first tab to be added it will become the selected tab.
Parameters | |
---|---|
tab |
TabLayout.Tab : The tab to add |
position |
int : The new position of the tab
|
addTab
void addTab (TabLayout.Tab tab)
Add a tab to this layout. The tab will be added at the end of the list. If this is the first tab to be added it will become the selected tab.
Parameters | |
---|---|
tab |
TabLayout.Tab : Tab to add
|
addTab
void addTab (TabLayout.Tab tab, int position, boolean setSelected)
Add a tab to this layout. The tab will be inserted at 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.
|
addView
void addView (View child, ViewGroup.LayoutParams params)
Parameters | |
---|---|
child |
View |
params |
ViewGroup.LayoutParams |
addView
void addView (View child, int index, ViewGroup.LayoutParams params)
Parameters | |
---|---|
child |
View |
index |
int |
params |
ViewGroup.LayoutParams |
clearOnTabSelectedListeners
void clearOnTabSelectedListeners ()
Remove all previously added TabLayout.OnTabSelectedListener
s.
generateLayoutParams
FrameLayout.LayoutParams generateLayoutParams (AttributeSet attrs)
Parameters | |
---|---|
attrs |
AttributeSet |
Returns | |
---|---|
FrameLayout.LayoutParams |
getSelectedTabPosition
int getSelectedTabPosition ()
Returns the position of the current selected tab.
Returns | |
---|---|
int |
selected tab position, or -1 if there isn't a selected tab.
|
getTabAt
TabLayout.Tab getTabAt (int index)
Returns the tab at the specified index.
Parameters | |
---|---|
index |
int |
Returns | |
---|---|
TabLayout.Tab |
getTabCount
int getTabCount ()
Returns the number of tabs currently registered with the action bar.
Returns | |
---|---|
int |
Tab count |
getTabGravity
int getTabGravity ()
The current gravity used for laying out tabs.
Returns | |
---|---|
int |
one of GRAVITY_CENTER or GRAVITY_FILL .
|
getTabMode
int getTabMode ()
Returns the current mode used by this TabLayout
.
Returns | |
---|---|
int |
See also:
getTabTextColors
ColorStateList getTabTextColors ()
Gets the text colors for the different states (normal, selected) used for the tabs.
Returns | |
---|---|
ColorStateList |
newTab
TabLayout.Tab newTab ()
Create and return a new TabLayout.Tab
. You need to manually add this using
addTab(Tab)
or a related method.
Returns | |
---|---|
TabLayout.Tab |
A new Tab |
See also:
removeAllTabs
void removeAllTabs ()
Remove all tabs from the action bar and deselect the current tab.
removeOnTabSelectedListener
void removeOnTabSelectedListener (TabLayout.OnTabSelectedListener listener)
Remove the given TabLayout.OnTabSelectedListener
that was previously added via
addOnTabSelectedListener(OnTabSelectedListener)
.
Parameters | |
---|---|
listener |
TabLayout.OnTabSelectedListener : listener to remove
|
removeTab
void removeTab (TabLayout.Tab tab)
Remove a tab from the layout. If the removed tab was selected it will be deselected and another tab will be selected if present.
Parameters | |
---|---|
tab |
TabLayout.Tab : The tab to remove
|
removeTabAt
void removeTabAt (int position)
Remove a tab from the layout. If the removed tab was selected it will be deselected and another tab will be selected if present.
Parameters | |
---|---|
position |
int : Position of the tab to remove
|
setOnTabSelectedListener
void setOnTabSelectedListener (TabLayout.OnTabSelectedListener listener)
This method was deprecated
in API level 26.1.0.
Use addOnTabSelectedListener(OnTabSelectedListener)
and
removeOnTabSelectedListener(OnTabSelectedListener)
.
Parameters | |
---|---|
listener |
TabLayout.OnTabSelectedListener |
setScrollPosition
void setScrollPosition (int position, float positionOffset, boolean updateSelectedText)
Set the scroll position of the tabs. This is useful for when the tabs are being displayed as
part of a scrolling container such as ViewPager
.
Calling this method does not update the selected tab, it is only used for drawing purposes.
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.
|
setSelectedTabIndicatorColor
void setSelectedTabIndicatorColor (int color)
Sets the tab indicator's color for the currently selected tab.
Related XML Attributes:
Parameters | |
---|---|
color |
int : color to use for the indicator |
setSelectedTabIndicatorHeight
void setSelectedTabIndicatorHeight (int height)
Sets the tab indicator's height for the currently selected tab.
Related XML Attributes:
Parameters | |
---|---|
height |
int : height to use for the indicator in pixels |
setTabGravity
void setTabGravity (int gravity)
Set the gravity to use when laying out the tabs.
Related XML Attributes:
Parameters | |
---|---|
gravity |
int : one of GRAVITY_CENTER or GRAVITY_FILL . |
setTabMode
void setTabMode (int mode)
Set the behavior mode for the Tabs in this layout. The valid input options are:
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 aViewPager
.
Related XML Attributes:
Parameters | |
---|---|
mode |
int : one of MODE_FIXED or MODE_SCROLLABLE . |
setTabTextColors
void setTabTextColors (int normalColor, int selectedColor)
Sets the text colors for the different states (normal, selected) used for the tabs.
Related XML Attributes:
Parameters | |
---|---|
normalColor |
int |
selectedColor |
int |
setTabTextColors
void setTabTextColors (ColorStateList textColor)
Sets the text colors for the different states (normal, selected) used for the tabs.
Parameters | |
---|---|
textColor |
ColorStateList |
See also:
setTabsFromPagerAdapter
void setTabsFromPagerAdapter (PagerAdapter adapter)
This method was deprecated
in API level 23.4.0.
Use setupWithViewPager(ViewPager)
to link a TabLayout with a ViewPager
together. When that method is used, the TabLayout will be automatically updated
when the PagerAdapter
is changed.
Parameters | |
---|---|
adapter |
PagerAdapter |
setupWithViewPager
void setupWithViewPager (ViewPager viewPager, boolean autoRefresh)
The one-stop shop for setting up this TabLayout
with a ViewPager
.
This method will link the given ViewPager and this TabLayout together so that changes in one are automatically reflected in the other. This includes scroll state changes and clicks. The tabs displayed in this layout will be populated from the ViewPager adapter's page titles.
If autoRefresh
is true
, any changes in the PagerAdapter
will
trigger this layout to re-populate itself from the adapter's titles.
If the given ViewPager is non-null, it needs to already have a
PagerAdapter
set.
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
|
setupWithViewPager
void setupWithViewPager (ViewPager viewPager)
The one-stop shop for setting up this TabLayout
with a ViewPager
.
This is the same as calling setupWithViewPager(ViewPager, boolean)
with
auto-refresh enabled.
Parameters | |
---|---|
viewPager |
ViewPager : the ViewPager to link to, or null to clear any previous link
|
shouldDelayChildPressedState
boolean shouldDelayChildPressedState ()
Returns | |
---|---|
boolean |
Protected methods
onAttachedToWindow
void onAttachedToWindow ()
onDetachedFromWindow
void onDetachedFromWindow ()
onMeasure
void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
Parameters | |
---|---|
widthMeasureSpec |
int |
heightMeasureSpec |
int |
Annotations
Interfaces
- AppBarLayout.OnOffsetChangedListener
- BaseTransientBottomBar.ContentViewCallback
- BottomNavigationView.OnNavigationItemReselectedListener
- BottomNavigationView.OnNavigationItemSelectedListener
- CoordinatorLayout.AttachedBehavior
- NavigationView.OnNavigationItemSelectedListener
- SwipeDismissBehavior.OnDismissListener
- TabLayout.OnTabSelectedListener
Classes
- AppBarLayout
- AppBarLayout.Behavior
- AppBarLayout.Behavior.DragCallback
- AppBarLayout.Behavior.SavedState
- AppBarLayout.LayoutParams
- AppBarLayout.ScrollingViewBehavior
- BaseTransientBottomBar
- BaseTransientBottomBar.BaseCallback
- BottomNavigationView
- BottomSheetBehavior
- BottomSheetBehavior.BottomSheetCallback
- BottomSheetBehavior.SavedState
- BottomSheetDialog
- BottomSheetDialogFragment
- CollapsingToolbarLayout
- CollapsingToolbarLayout.LayoutParams
- CoordinatorLayout
- CoordinatorLayout.Behavior
- CoordinatorLayout.LayoutParams
- CoordinatorLayout.SavedState
- FloatingActionButton
- FloatingActionButton.Behavior
- FloatingActionButton.OnVisibilityChangedListener
- NavigationView
- NavigationView.SavedState
- Snackbar
- Snackbar.Callback
- SwipeDismissBehavior
- TabItem
- TabLayout
- TabLayout.Tab
- TabLayout.TabLayoutOnPageChangeListener
- TabLayout.ViewPagerOnTabSelectedListener
- TextInputEditText
- TextInputLayout
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-04-11 UTC.