【问题标题】:Support Library Version 28.0.0 TabLayout bug支持库版本 28.0.0 TabLayout 错误
【发布时间】:2018-10-02 23:38:02
【问题描述】:

更新到最新版本的支持库(27.1.1 -> 28.0.0)后,用户界面出现问题。

一个问题:

期望的状态:

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) 解决此问题?

【问题讨论】:

    标签: android android-layout android-tablayout


    【解决方案1】:

    用这个替换你的背景drawable:

    <?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 的黑色来覆盖大部分。这永远不会在选项卡项目范围之外绘制,因此问题消失了。这里有一个小的透支成本(因为“线条”颜色必须与“背景”颜色重叠),但我认为这不会对三个选项卡产生任何性能影响。

    【讨论】:

    • 谢谢,它有效。缺点是如果主背景不同,需要创建多个背景资源文件。
    • @AlexanderAnokhin 您可以使用主题属性作为第二个&lt;item&gt; 的颜色。如果您的工具栏/活动对其背景使用相同的主题属性,并且主题设置颜色,那么您可能只有这些文件之一。
    猜你喜欢
    • 2020-01-10
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多