Android 7.0 N中SlidingTabLayout栏上的额外空白区域?

时间:2016-08-23 19:24:59

标签: android android-tabs android-7.0-nougat

刚刚升级到Android 7.0,我的所有SlidingTabLayout栏现在底部都有额外的空白区域。不确定这是否是Android团队的意图,但无论如何都要摆脱新的空白区域?

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>

谢谢!如果您需要更多信息,请与我们联系。

5 个答案:

答案 0 :(得分:15)

distributeEvenly为真时会发生这种情况。只需评论

lp.width = 0;
populateTabStrip()课程的SlidingTabLayout.java方法中

,您的问题就会得到解决。

答案 1 :(得分:0)

您的组件样式文件是否已声明

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

我只是发现了与BottomDialog类似的错误,我删除了

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

我的组件样式文件中的这一行,否则该组件将显示在真实底部上方30dp。 我想你应该查看这个文件:

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

逐个删除项目以查找哪个项目可以解决此错误。

答案 2 :(得分:0)

我认为它不会对您有用,但仍会在您的布局中尝试这一点。设置自定义高度(48dp)并为牛轧糖设置条件。不幸的是,它对我有用:)。

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

答案 3 :(得分: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>

答案 4 :(得分:0)

阿夫申给出了一个很好的答案。我遇到过一些API低于25的问题。这可能是较晚的答案,但可能会对某人有所帮助。

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    lp.weight = 1;
                }else{
                    lp.width = 0;
                    lp.weight = 1;
                }