2016-08-23 42 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>