使用“设计支持库”时,选项卡不会占据全宽

时间:2016-01-19 13:14:57

标签: android androiddesignsupport

我正在关注this tutorial,其中介绍了如何实施Google Design Support Library中包含的新TabLayout。这是我的应用程序:

enter image description here

从上面的屏幕截图中可以看出,我的标签没有占据整个屏幕宽度。

我该如何解决?

这是我的活动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后,以下是该应用的展示方式:

enter image description here

我需要它们来填充宽度。

这个问题不重复。另一个答案没有解决我的问题。

3 个答案:

答案 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" />

好像你不需要设置任何内容。

证明:

enter image description here

顺便说一句,您也可以查看:

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

答案 1 :(得分:0)

解决方案是将这些添加到xml和java:

在Java中:

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

用于TabLayout的XML:

            app:tabGravity="center"
            app:tabMode="fixed"

结果:

enter image description here

答案 2 :(得分:-1)

像这样设置TabLayoutMode

tabLayout.setTabMode(TabLayout.MODE_FIXED);