2016-04-14 107 views
1

我还有一个错误,它会在不同的Android版本上制作不同的标签宽度。在android 4.1.1和android 5.1选项卡宽度服从模式'填充'和tablayout宽度匹配perent。而Android 4.4.4的宽度看起来像wrap_content。设计库版本23.3.0。如何解决它?TabLayout宽度错误

enter image description here

enter image description here

enter image description here

布局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white" 
    android:clickable="true" 
    > 
    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill" 
     app:tabIndicatorHeight="0dip" 
     app:tabIndicatorColor="@android:color/transparent" 
     app:tabBackground="@drawable/tab_request_background" 
     app:tabTextColor="@color/colorPrimary" 
     app:tabSelectedTextColor="@color/white" 
     /> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     /> 
</LinearLayout> 

回答

0

看来,有没有简单的方法来解决因为这一点:

/// Android SDK 24.2.0 TabLayout.java 

public void setTabGravity(@TabGravity int gravity) { 
     if (mTabGravity != gravity) { 
      mTabGravity = gravity; 
      applyModeAndGravity(); 
     } 
    } 

private void applyModeAndGravity() { 
     int paddingStart = 0; 
     if (mMode == MODE_SCROLLABLE) { 
      // If we're scrollable, or fixed at start, inset using padding 
      paddingStart = Math.max(0, mContentInsetStart - mTabPaddingStart); 
     } 
     ViewCompat.setPaddingRelative(mTabStrip, paddingStart, 0, 0, 0); 

     switch (mMode) { 
      case MODE_FIXED: 
       mTabStrip.setGravity(Gravity.CENTER_HORIZONTAL); 
       break; 
      case MODE_SCROLLABLE: 
       mTabStrip.setGravity(GravityCompat.START); 
       break; 
     } 

     updateTabViews(true); 
    } 

Soo愚蠢的bug :(

0

发现设置选项卡的最小宽度为0可解决此问题。它也似乎不是一个,而是一个feature,因为在高宽度设备选项卡上分离到很多空间(特别是在横向模式下的平板电脑上),并且支持库开发人员迫使我们处理它以创建更好的接口