Android 7.0 N 中 SlidingTabLayout 栏上的额外白色 space?

Extra white space on SlidingTabLayout bar in Android 7.0 N?

刚刚升级到 Android 7.0,我所有的 SlidingTabLayout 条现在底部都有额外的白色 space。不确定这是否是 Android 团队的意图,但是是否有办法摆脱新的白色 space?

我正在使用 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>

谢谢!如果您需要更多信息,请告诉我。

你的组件样式文件有声明吗

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

我刚发现一个与 BottomDialog 类似的错误,我删除了

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

这一行在我的组件样式文件中,否则组件将显示在实际底部之上 30dp。 我认为你应该检查这个文件:

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

一项一项删除,找出是哪个项目引起了这个bug。

我不认为它是否适合你,但仍然在你的布局中尝试这个。设置自定义高度 (48dp) 并设置牛轧糖的条件。不幸的是,它对我有用:) .

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

distributeEvenly 为真时会发生这种情况。随便评论

lp.width = 0;

populateTabStrip()方法中SlidingTabLayout.javaclass你的问题就解决了

您应该将标签的 TextView 的最大行数设置为 1。

有两种方法:

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>

Afshin 给出了很好的答案。我遇到了一些 API 低于 25 的问题。这可能是迟到的答案,但它可以帮助某人。

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