TextView: невозможно изменить цвет текста во время выполнения - PullRequest
2 голосов
/ 24 июня 2011

Это мой первый пост здесь.Я должен изменить TextView's цвет текста во время выполнения.Есть метод TextView.setTextColor(int), но он не работает со значениями int, которых нет в ресурсах.

Например, цвет, рассчитанный во время выполнения, такой как 0xFF0000 (RGB), отсутствует в R.color, не работает.TextView не отображается.
Я рассмотрел исходный код Android для этого, и есть два метода, ни один из которых не принимает rgb int values в качестве аргумента:

/**
 * Sets the text color for all the states (normal, selected,
 * focused) to be this color.
 *
 * @attr ref android.R.styleable#TextView_textColor
 */
@android.view.RemotableViewMethod
public void setTextColor(int color) {
    mTextColor = ColorStateList.valueOf(color);
    updateTextColors();
}

/**
 * Sets the text color.
 *
 * @attr ref android.R.styleable#TextView_textColor
 */
public void setTextColor(ColorStateList colors) {
    if (colors == null) {
        throw new NullPointerException();
    }

    mTextColor = colors;
    updateTextColors();
}

Значит, нет способа сделать это?Возможно расширение TextView?

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 24 июня 2011

Думаю, проблема в том, что вы не устанавливаете альфа-значение цвета.

TextView.setTextColor() не принимает значения 0xRRGGBB. Вместо этого он принимает 0xAARRGGBB. Всякий раз, когда вы ставите "0xFF0000", вы фактически даете значение "0x00FF0000", которое дает ему альфа-значение "0", поэтому TextView не отображается. Таким образом, вместо 0xFF0000 попробуйте установить его на 0xFFFF0000.

В качестве альтернативы вы можете использовать класс Color для Android. Метод "Color.rgb (int, int, int)" неявно присваивает альфа-значение 255, поэтому при вызове "Color.rgb(255, 0, 0)" должно получиться значение красного цвета для текста.

3 голосов
/ 24 июня 2011

Попробуйте это

взять экземпляр TextView и вызвать setTextColor метод

предположим, что у вас есть TextView с идентификатором myTextView, а затем сначала получите его экземпляр

TextView myText = (TextView) findViewById(R.id.myTextView);

затем вызовите setTextColor метод

myText .setTextColor(android.graphics.Color.RED);

ИЛИ

myText .setTextColor(android.graphics.Color.rgb(int red,int green,int blue);
1 голос
/ 24 июня 2011

Попробуйте следующее

textView.setTextColor(Color.rgb(0,0,0));
...