Как передать цвет на пользовательский элемент XML в Android?

У меня есть пользовательская форма для 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"

введите описание изображения здесь

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

Всего 2 ответа


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

 yourview.setBackgroundResource(R.drawable.another);

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

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

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


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

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

Есть идеи?

10000