Как передать цвет пользовательскому элементу xml в Android? - PullRequest
0 голосов
/ 15 января 2020

У меня есть пользовательская форма для button's dashed border. С hardcoded color все работает как положено, но мне нужно pass color from outside. Как я могу это сделать?

Вот мой xml.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid/>
        <corners android:radius="16dip" />
        <stroke
            android:width="1dp"
            android:color="@color/blue"
            android:dashWidth="3dp"
            android:dashGap="3dp"
            />
    </shape>
</item>
</selector>

, и это использование

android:background="@drawable/dashed_border_button"

enter image description here

Мне нужно изменить цвет границы с жесткого кода на динамический c

Ответы [ 2 ]

1 голос
/ 15 января 2020

Я добился того же, используя другой файл ресурсов Drawable с атрибутом Stroke - Color = "your color", а затем установив фон Drawable в новый файл Drawable

 yourview.setBackgroundResource(R.drawable.another);

Это потому, что метод:

DrawableCompat.setTint(as.getBackground(),Color.BLUE);

Установите даже цвет заливки solid на синий (здесь в данном случае), который вам не нужен. Надеюсь, это поможет !! `

0 голосов
/ 15 января 2020

Вам нужно получить background () из вашего представления и сделать

DrawableCompat.setTint(color, DrawableCompat.wrap(view.bacground())
...