Изменить цвет нарисованной фигуры на заданный HEX - PullRequest
0 голосов
/ 31 января 2019

У меня есть textView, которые создаются программно.Они должны иметь разные цветовые значения.Мне не нужна анимация или что-то необычное, просто заданное шестнадцатеричное значение (например, FF00AB) для применения к рисуемой форме textView:


list_item.xml

<TextView
        android:id="@+id/icon"
        android:background="@drawable/rounded_corner" />

rounded_corner.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/dummyColorValue" />
</shape>

ListAdapter.java

   // Set Icon Color
   String color "FF00AB";
   Drawable iconDrawable = txtIcon.getBackground();
// how to change the <solid android:color>-Value of iconDrawable HERE??

Предположим,шестнадцатеричное значение переменной color является динамическим.

Q: Является ли setColorFilter () неправильным подходом или мне как-то нужно преобразовать строку?

1 Ответ

0 голосов
/ 31 января 2019

Есть несколько решений, которые я придумал, и одно из них вам наверняка поможет:

1

 GradientDrawable bgShape = (GradientDrawable)btn.getBackground();
      bgShape.setColor(Color.BLACK); 

2

((GradientDrawable)someView.getBackground()).setColor(someColor);

3

   LayerDrawable bgDrawable = (LayerDrawable) button.getBackground();
final GradientDrawable shape = (GradientDrawable)
        bgDrawable.findDrawableByLayerId(R.id.round_button_shape);
shape.setColor(Color.BLACK);

4

    example.setBackgroundResource(R.drawable.myshape);
GradientDrawable gd = (GradientDrawable) example.getBackground().getCurrent();
gd.setColor(Color.parseColor("#000000"));
gd.setCornerRadii(new float[]{30, 30, 30, 30, 0, 0, 30, 30});
gd.setStroke(2, Color.parseColor("#00FFFF"), 5, 6);

Надеюсь, это поможет вам :)

...