2016-01-19 90 views
1

我在跟隨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:tabModefixed,這裏的應用程序的外觀:

enter image description here

我需要它們來填充寬度。

此問題不重複。另一個答案沒有解決我的問題。

+0

的可能的複製[在TabLayout標籤不填滿整個動作條( http://stackoverflow.com/questions/30721498/tabs-in-tablayout-not-filling-up-entire-actionbar) – Mohsen

回答

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); 
+0

是的,你將不得不使用'gravity_center'! – zIronManBox

+0

這解決了他們在中心,但仍然不會採取全屏的屏幕... – VSG24

+0

刪除該滾動應該工作,然後我猜:這行:'app:tabMode =「可滾動」' – Mohsen

-1

設置TabLayoutMode這樣的:

tabLayout.setTabMode(TabLayout.MODE_FIXED); 
+1

這與設置'app:tabMode =「fixed」'我已經做了什麼不同嗎? – VSG24

0

解決的辦法是把這些東西加到xml和java:

在Java:

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

以XML爲TabLayout:

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

結果:

enter image description here

+0

我的回答有什麼不同? :) – Mohsen

+0

Java代碼是必須的。重力需要在xml和java中設置。在xml它需要設置爲'中心'和在Java中'填充' – VSG24

+0

你不會需要,我的答案正在working.without這兩個! – Mohsen

相關問題