2016-08-23 45 views
2

剛剛升級到Android 7.0,我的所有SlidingTabLayout酒吧底部都有額外的空白空間。不知道這是否是Android團隊的意圖,但無論如何擺脫新的空白空間?Android 7.0 N中的SlidingTabLayout欄上的額外空白區域?

Extra White Space on SlidingTabLayout bar

我使用由Android提供的代碼可以在這裏找到:

滑動翼片佈局:https://developer.android.com/samples/BasicTransition/src/com.example.android.common/view/SlidingTabLayout.html

滑動的拉條: https://developer.android.com/samples/BasicTransition/src/com.example.android.common/view/SlidingTabStrip.html

這裏是一個片段我的佈局代碼:

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/tool_bar" 
     android:layout_height="56dp" 
     android:layout_width="match_parent" 
     android:background="@drawable/toolbar_gradient" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:theme="@style/Base.ThemeOverlay.AppCompat.Dark" /> 

    <com.airsenze.wineinsider.controllers.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/white"/> 

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

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:layout_width="match_parent"> 
</android.support.v4.view.ViewPager> 

謝謝!讓我知道你是否需要任何信息。

+0

「不當然,如果這是由打算Android團隊與否「 - 這是您的代碼,而不是Android團隊的代碼。您從一個Android示例開始,但是像這樣的Android示例並不一定保證在API級別保持一致。它們是示例,不支持庫類。實際上,您需要自己維護您的代碼的修改版本。 – CommonsWare

+0

是的,我明白這一點。不要試圖指責Android團隊的任何事情。我一直在嘗試整個早上擺脫空白,但似乎沒有任何工作。只是想知道如果有人有一個快速解決方案擺脫它。 – Lunkie

+0

爲什麼不把你的工具欄高度設置爲'wrap_content'? –

回答

10

這發生在distributeEvenly爲真時。只是評論

lp.width = 0; 

SlidingTabLayout.java類的populateTabStrip()方法,你的問題將得到解決。

+0

這適用於牛軋糖設備!我不知道它是否影響已經工作的以前的版本,儘管...感謝一堆! –

+1

是的。我在Android 4.0上測試它到最後的版本(7.0),沒關係。 – Afshin

+1

雖然它解決了最初的問題,但此解決方案添加了另一個,但選項卡不再均勻分佈。我已將「lp.width = 0」替換爲「lp.width = ViewGroup.LayoutParams.MATCH_PARENT」。這似乎工作。 – MihaiW

0

請問您的組件樣式文件中有聲明

--<item name="android:windowIsFloating">false</item>-- 

我只是找到BottomDialog類似的bug,我刪除

--<item name="android:windowIsFloating">false</item>-- 

這條線在我的組件式的文件,否則該組件將顯示上述30DP真正的底部。 我想你應該檢查這個文件:由一個

android:theme="@style/AppTheme.AppBarOverlay" 

刪除項之一來查找哪個項目acuse這個bug。

0

我不認爲它會爲你工作,但仍然嘗試在你的佈局。設置自定義高度(48dp)並設置牛軋糖的條件。它不幸爲我工作:)。

<com.airsenze.wineinsider.controllers.SlidingTabLayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:background="@color/white"/> 
0

您應該將最大線數設置爲1以選項卡的TextView。

有兩種方式:

1.更改SlidingTabLayout:

protected TextView createDefaultTabView(Context context) { 
    TextView textView = new TextView(context); 
    textView.setMaxLines(1); 
    ... 
} 

2.使用自定義選項卡布局

例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="?selectableItemBackground" 
       android:gravity="center_horizontal" 
       android:orientation="vertical" 
       android:paddingBottom="8dp" 
       android:paddingTop="8dp"> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAllCaps="true" 
     android:textColor="@color/text_tab" 
     android:maxLines="1" <=============attention============== 
     android:textSize="12dp" 
     android:textStyle="bold"/> 

</LinearLayout>