Ссылка на атрибуты темы изнутри - PullRequest
0 голосов
/ 20 сентября 2018

Я столкнулся с проблемой после обновления targetSdkVersion и поддержки версий моих приложений для libs до Oreo (27).Проблема в том, что когда я запускаю свое приложение на Android 4, API 19, я получаю ошибку во время выполнения.Проблема в том, что он не может найти значение указанного атрибута.Вот код:

styles.xml:

<style name="CustomStyle" parent="OtherCustomStyle">
    <item name="screenPrimaryColor">@color/primary</item>
    <item name="screenPrimaryColorDark">@color/primaryDark</item>
</style>

<attr name="screenPrimaryColor" format="reference" />
<attr name="screenPrimaryColorDark" format="reference" />

activity_test.xml:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@style/CustomStyle">

    <include layout="@layout/inner_test"/>
</FrameLayout>

inner_test.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/instant_sale_bottom_margin">

    <!-- HEADER -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="?attr/screenPrimaryColor"
        android:baselineAligned="false">

        <!-- REST OF MY LAYOUT -->

    </LinearLayout>
</LinearLayout>

AsВы можете видеть, что стиль применяется как тема в activity_test.xml.Тем не менее, с этой комбинацией (поддержка lib 27 и Android 4.4) она не работает, и приложение вылетает при надувании макета.Сбой из-за android:background="?attr/screenPrimaryColor" во включенном представлении.Это работало нормально, прежде чем я обновил библиотеки поддержки.Также это хорошо работает с новыми библиотеками поддержки на устройствах под управлением Android более новой версии, чем 4.

Я думаю, что это может быть ошибкой в ​​библиотеке поддержки.Мой вопрос заключается в том, сталкивался ли кто-нибудь из вас с этой проблемой.

(Кстати, я нашел «решение», которое заключается в установке той же темы в включенном представлении (inner_test.xml в моем случае).Однако это грязное решение, поскольку inner_test.xml может быть повторно использовано в различных частях приложения.)

...