我正在关注this tutorial,其中介绍了如何实施Google Design Support Library中包含的新TabLayout。这是我的应用程序:
从上面的屏幕截图中可以看出,我的标签没有占据整个屏幕宽度。
我该如何解决?
这是我的活动xml: (我的Java代码与the tutorial中的代码相同。在下面的代码中,我的tablayout和viewpager在FrameLayout中)
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- your content layout -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Toolbar instead of ActionBar so the drawer can slide on top -->
<!-- If you want to have dark background for options buttons remove the popup theme -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:layout_width="match_parent"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
<!-- Real content goes here -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
</FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:id="@+id/nav_view"
app:headerLayout="@layout/nav_view_header"
app:menu="@layout/nav_view_menu"
app:theme="@style/MyTheme.NavMenu" />
</android.support.v4.widget.DrawerLayout>
编辑:
添加app:tabGravity="center"
并将app:tabMode
更改为fixed
后,以下是该应用的展示方式:
我需要它们来填充宽度。
这个问题不重复。另一个答案没有解决我的问题。
答案 0 :(得分:2)
http://developer.android.com/reference/android/support/design/widget/TabLayout.html
GRAVITY_CENTER
重力用于布置中心的标签 TabLayout。
GRAVITY_FILL
重力用于尽可能多地填充TabLayout。
MODE_FIXED
固定标签同时显示所有标签,最好 与使用标签之间的快速枢轴的内容一起使用。
MODE_SCROLLABLE
可滚动标签显示任意标签的子集 给定时刻,并且可以包含更长的标签标签和更多的标签 标签。
只需在TabLayout
:
app:tabMode="fixed"
修改强>
我正在使用它并且它正在工作:
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
好像你不需要设置任何内容。
证明:
顺便说一句,您也可以查看:
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
答案 1 :(得分:0)
解决方案是将这些添加到xml和java:
在Java中:
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
用于TabLayout的XML:
app:tabGravity="center"
app:tabMode="fixed"
结果:
答案 2 :(得分:-1)
像这样设置TabLayoutMode
:
tabLayout.setTabMode(TabLayout.MODE_FIXED);