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 提供的代码,可在此处找到:
这是我的布局代码片段:
<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.java
class你的问题就解决了
您应该将标签的 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;
}
刚刚升级到 Android 7.0,我所有的 SlidingTabLayout 条现在底部都有额外的白色 space。不确定这是否是 Android 团队的意图,但是是否有办法摆脱新的白色 space?
我正在使用 Android 提供的代码,可在此处找到:
这是我的布局代码片段:
<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.java
class你的问题就解决了
您应该将标签的 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;
}