其他分享
首页 > 其他分享> > android-支持库版本28.0.0 TabLayout错误

android-支持库版本28.0.0 TabLayout错误

作者:互联网

在更新到最新版本的支持库(27.1.1-> 28.0.0)之后,用户界面存在问题.

一个问题:
enter image description here

理想状态:
enter image description here

tab_layout_unselected_indicator.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="-5dp"
        android:right="-5dp"
        android:top="-5dp">
        <shape>
            <stroke
                android:width="2dp"
                android:color="@color/colorGrey" />
        </shape>
    </item>
</layer-list>

tab_layout:

<android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorBlackDark"
        android:theme="@style/AppTheme.AppBarOverlay"
        app:tabBackground="@drawable/tab_layout_unselected_indicator"
        app:tabIndicatorColor="@color/colorOrange"
        app:tabMode="fixed"
        app:tabSelectedTextColor="@color/colorOrange"
        app:tabTextAppearance="@style/StrikeCustomTabText"
        app:tabTextColor="@color/colorGrey" />

看起来一个标签的背景与另一个标签交叉.我试图更改缩进并注意到这一点.现在,我正在使用支持库的早期版本(27.1.1).如何为当前版本的支持库(28.0.0)修复此问题?

解决方法:

用以下内容替换背景可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/colorGrey"/>
        </shape>
    </item>

    <item android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorBlackDark"/>
        </shape>
    </item>

</layer-list>

您已正确确定当前背景的问题;新的支持库允许选项卡项目在其边界之外绘制,因此您看到的是负边距边框实际上现在出现了,而不是被剪切掉了.

要解决此问题,您可以改为绘制整个灰色背景,然后绘制大约2dp的黑色来覆盖其中的大部分.这永远不会超出选项卡项目范围,因此问题消失了.这里的透支成本很小(因为“线”色必须与“背景”色重叠),但是我认为这对三个选项卡不会有任何性能影响.

标签:android-tablayout,android-layout,android
来源: https://codeday.me/bug/20191108/2008670.html