Как изменить цвет TextView во время выполнения с атрибутом shape на Android? - PullRequest
1 голос
/ 26 октября 2010

Я использую атрибут формы следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:padding="10dp">
<solid
    android:color="#FFFFFF" />
<corners
    android:bottomRightRadius="15dp"
    android:bottomLeftRadius="15dp"
    android:topLeftRadius="15dp"
    android:topRightRadius="15dp" />
</shape>

и

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/rounded_textview">
        </TextView>

Если я изменю цвет во время выполнения следующим способом:

TextView.setBackgroundColor();

Форма, которую я использовал, исчезла.Что я должен сделать, чтобы изменить его надлежащим образом?Или мне нужно сгенерировать много формы только для разных цветов?

Спасибо.

Ответы [ 3 ]

1 голос
/ 27 октября 2010

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

public static PaintDrawable getRoundedColorDrawable(int color, float radius, int padding) {
    PaintDrawable paintDrawable = new PaintDrawable(color);
    paintDrawable.setCornerRadius(radius);
    paintDrawable.setPadding(padding, padding, padding, padding);
    return paintDrawable;
}
0 голосов
/ 15 июня 2011

У меня была такая же проблема

Вы можете использовать этот метод

TextView tv = // ... //;
tv.setBackgroundResource(R.drawable.myshape);

Он прекрасно работает для меня!

0 голосов
/ 26 октября 2010

Вам нужно установить фон другой формы с правильным элементом Solid.setBackgroundColor Я считаю, что это просто сокращение к чему-то вроде:

void setBackgroundColor(int color){
 ColorDrawable drawable = new ColorDrawable(color);
 setBackgroundDrawable(drawable);
}

Так что да, вам понадобится несколько фигур:)

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