На некоторых устройствах можно нарисовать круглую форму без цветопередачи - PullRequest
0 голосов
/ 20 марта 2019

У меня проблемы с отрисовкой в ​​Android, и после нескольких дней интенсивных исследований я решил попросить вас о помощи.

Для удовлетворения своих потребностей я создал отрисовку для использованияэто в моем макете XML в Android Studio (файл называется circle.xml). Вот код:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:innerRadius="0dp"
               android:shape="ring"
               android:thicknessRatio="2"
               android:useLevel="false">
            <solid android:color="#BABABE"/>
        </shape>
    </item>
</selector>

Цвет, заданный здесь, является общим, но зависит от случая, в котором я использую рисование.Вот ConstraintLayout, который я использую:

<android.support.constraint.ConstraintLayout
                android:id="@+id/constraintLayout11"
                android:layout_width="71dp"
                android:layout_height="71dp"
                android:layout_marginTop="24dp"
                android:background="@drawable/circle"
                android:backgroundTint="#D95F2B"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent">
</android.support.constraint.ConstraintLayout>

Я установил новый цвет со следующими атрибутами:

android:background="@drawable/circle"
android:backgroundTint="#D95F2B"

При установке атрибута background круг появляется вConstraintLayout и установка backgroundTint color изменяют цвет круга.

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

Я знаю, что мог бы установить цвет в своем коде активности, но это не совсем то, что я хочу.

Любая идея исправить это?Не стесняйтесь задавать мне несколько вопросов, если это необходимо.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 20 марта 2019

Очевидно, что drawable работает так, как должно быть, поэтому проблема с android:backgroundTint.

Действительно, этот атрибут работает на API> 21, в то время как с некоторыми другими телефонами вы можете столкнуться со странным поведениемтипы.

Так что, если вам нужен круг универсальный , чтобы использовать его повсюду, есть несколько способов:

  • Использование цвета напрямуюв нарисованном <solid android:color="@color/your_color"/>, и кажется, что это не поможет в вашем случае.

  • Используйте атрибут android:colorBackground вместо backgroundTint, и вы установите его в стиле, например:

Стиль:

<style name="YourStyle" parent="YourParent">
        <item name="android:background">@drawable/circle</item>
        <item name="android:colorBackground">@color/your_color</item>
    </style>

Стиль будет использоваться с вашим макетом ограничения.

  • Использование вида обертки, то есть:

Xml: -

<ConstraintLayout
android:background="@drawable/circle"

 <View
 android:background="@color/your_color"
 >
>
...