ColorPrimary не работает ниже Android 5.0 - PullRequest
0 голосов
/ 15 февраля 2019

В моем приложении пользователь может переключать тему между синим и зеленым.все работает нормально в выше Android версии 5.0, но ниже Android 5.0 мое приложение сбой .

ниже мой стиль код

  <style name="AppTheme.Blue" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/blue</item>
    <item name="colorPrimaryDark">@color/bllueDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.Green" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/bluish_green</item>
    <item name="colorPrimaryDark">@color/bluish_green</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

И мой нарисованный код файла

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="?colorPrimary"></solid>
        <corners android:radius="3dp"></corners>
    </shape>
</item>

А мой макет

<androidx.constraintlayout.widget.ConstraintLayout
                        android:layout_width="match_parent"
                        android:layout_height="90dp"
                        android:background="@drawable/my_drawable">
//other code
</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Вместо ?colorPrimary, попробуйте и используйте этот ?attr/colorPrimary

0 голосов
/ 15 февраля 2019

Ссылки ?attr/ не поддерживаются в XML-чертежах на более низких уровнях API Android.Я предположил бы, что это был уровень 21, когда он был представлен, но я не смог найти никакой документации об этом.

Поэтому вам придется напрямую использовать ресурсы цвета.Если вам нужны разные цвета для динамических тем, вы можете достичь чего-то подобного с помощью правильно окрашенных рисованных элементов, предоставляемых темой.

В качестве альтернативы вы можете игнорировать эти старые версии Android в контексте пользовательского интерфейса или даже поддержки.

0 голосов
/ 15 февраля 2019

Объявите colorPrimary в вашем colors.xml, а затем попробуйте @color/colorPrimary вместо ?colorPrimary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...