更新到最新版本的支持库(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)修复此问题?
答案 0 :(得分:3)
为此替换背景可绘制对象:
<?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覆盖大部分内容。这永远不会超出选项卡项目范围,因此问题消失了。这里的透支成本很小(因为“线条”颜色必须与“背景”颜色重叠),但是我认为这对三个选项卡不会有任何性能影响。