2015-06-09 12 views
19

Tôi đang sử dụng một TabLayoutViewPager để hiển thị ActionBar tabs sau hướng dẫn Google Play Style Tabs using TabLayout Tuy nhiên tab của tôi được squished sang phía bên trái của ActionBar, hiển thị dưới đây:Tabs trong TabLayout không lấp đầy toàn bộ ActionBar


Và Tôi muốn họ chiếm toàn bộ thanh với chiều rộng bằng nhau. Tôi đã thực hiện chỉ có một vài thay đổi nhỏ để hướng dẫn:

Trong activity_main.xml một phong cách được tạo ra để hiển thị các ActionBar:

<android.support.design.widget.TabLayout 
    android:id="@+id/sliding_tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="@style/AppTheme" 
    app:tabMode="scrollable" /> 

Đây là mã styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="windowActionBar">true</item> 
    <item name="tabIndicatorColor">#ffff0030</item> 
</style> 

Ngoài ra, số MainActivity của tôi hiện mở rộng AppCompatActivity thay vì FragmentActivity.

+0

TabLayout của bạn được nhúng trong LinearLayout như được hiển thị trong hướng dẫn? – Gosu

+0

Có nó là với LinearLayout –

+1

thêm tính năng này sẽ hoạt động: 'app: tabGravity =" fill "' – Weel

Trả lời

35

Bạn có thể tham khảo các TabLayout.

GRAVITY_CENTER Lực hấp dẫn được sử dụng để bố trí các tab ở giữa TabLayout.

GRAVITY_FILL Trọng lực được sử dụng để điền TabLayout càng nhiều càng tốt.

MODE_FIXED Tab cố định hiển thị tất cả các tab đồng thời và được sử dụng tốt nhất với nội dung có lợi từ các chốt nhanh giữa các tab.

MODE_SCROLLABLE Tab cuộn hiển thị tập con các tab tại bất kỳ thời điểm cụ thể nào và có thể chứa nhãn tab dài hơn và số lượng tab lớn hơn.

Đặt mã này trong mã của bạn hoặc xml bố cục của bạn.

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

hoặc

tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER); 
tabLayout.setTabMode(TabLayout.MODE_FIXED);  

Nói chung, sử dụng mã như đòn có thể làm việc mà không cần thiết lập tabGravitytabMode.

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:layout_scrollFlags="scroll|enterAlways" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.design.widget.AppBarLayout> 
+2

Tôi lấy ra dòng 'app: tabMode = "scrollable" 'và nó giải quyết được vấn đề. –

+0

Tôi cũng có thể xác nhận rằng xóa ứng dụng: tabMode = "" khỏi tệp XML đã giải quyết mọi thứ. Thay đổi giá trị tabMode sẽ vẫn làm cho các tab xuất hiện bị mờ. Nó chỉ được giải quyết bằng cách không bao gồm thuộc tính này chút nào. – ChallengeAccepted

+0

@Ellie Zou làm việc như một sự quyến rũ !! Cảm ơn bạn! :) –

3

Hãy thử thêm này để MainActivity:

tabLayout.setTabMode(TabLayout.MODE_FIXED); 
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
1

Add - app: tabGravity = "fill" thuộc tính trong xml.

Ví dụ -

<android.support.design.widget.TabLayout 
     android:id="@+id/tablayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabGravity="fill" /> 
0

thử này nó hoạt động

app:tabGravity="fill" 
app:tabMode="fixed" 
26

Simple câu trả lời Mà tôi nhận được từ đây là: here

Bạn chỉ cần đặt này trong mã xml của bạn:

<android.support.design.widget.TabLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMaxWidth="0dp" 
      app:tabGravity="fill" 
      app:tabMode="fixed" /> 
+0

làm việc .. cảm ơn –

+3

Bạn đang giết nó! Thông số tabMaxWidth đã giúp tôi sửa một thiết bị không hoạt động. app: tabGravity = "fill" & app: tabMode = "fixed" không đủ cho một trong các thiết bị của tôi. – Tobliug

+1

điều này cố định một vấn đề cho tôi trong chế độ phong cảnh (mặc dù nó đã làm việc tốt trong bức chân dung) – TWL

0

Đặt chiều rộng TabLayout để khớp với Cha mẹ

Như thế này.

<TabLayout 
    android:layout_width="match_parent" 
    android:layout_height="60dp"/> 
Các vấn đề liên quan