Поддержка библиотеки версии 28.0.0 Ошибка TabLayout - PullRequest
0 голосов
/ 25 сентября 2018

После обновления до последней версии библиотеки поддержки (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)?

1 Ответ

0 голосов
/ 02 октября 2018

Замените свой фон для рисования следующим образом:

<?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 черного, чтобы покрыть большую часть этого.Это никогда не рисует за пределами границ элемента вкладки, поэтому проблема исчезает.Здесь небольшая стоимость перерисовки (поскольку цвет «линии» должен перекрываться цветом «фона»), но я не думаю, что это повлияет на производительность всего лишь трех вкладок.

...