1) Можно ли программно установить цвет TextView? Если да, то каков самый простой способ?

Я хочу что-то еще, кроме светло-голубого цвета по умолчанию 4.0+.

Я нашел и безуспешно попробовал следующий код:

StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(0x1A000000));
states.addState(new int[] {android.R.attr.state_focused}, new ColorDrawable(0x1A000000));

if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    tv.setBackgroundDrawable(states);
} else {
    tv.setBackground(states);
}

Я не хочу, чтобы XML был задействован.

2) Могу ли я вообще изменить цвет фокуса в моих темах? Если да, то как?

Очевидно, здесь XML подходит.

4
Diolor 21 Май 2014 в 10:08

5 ответов

Лучший ответ

Вы можете использовать ColorStateList, чтобы программно указать цвет состояния.

    int[][] states = new int[][] {
        new int[] { android.R.attr.state_pressed}, // pressed
        new int[] { android.R.attr.state_focused}, // focused
        new int[] { android.R.attr.state_enabled} // enabled
    };

    int[] colors = new int[] {
        Color.parseColor("#008000"), // green
        Color.parseColor("#0000FF"), // blue
        Color.parseColor("#FF0000")  // red
    };

    ColorStateList list = new ColorStateList(states, colors);
    textView.setTextColor(list);        
    textView.setClickable(true);
    textView.setFocusableInTouchMode(true);
10
Manish Mulimani 23 Май 2014 в 18:04

Используйте http://android-holo-colors.com/ для создания темы для редактирования текста только с определенными цвет.

1
Usman Afzal 26 Май 2014 в 08:12

Создайте файл res / drawable / text_color.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" />
    <item android:state_focused="true" android:state_pressed="true" android:color="#ffffff" />
    <item android:state_focused="false" android:state_pressed="true" android:color="#ffffff" />
    <item android:color="#000000" />
</selector>

Затем используйте @drawable/text_color из xml (или R.drawable.text_color из кода) в качестве цвета текста для вашего TextView.

0
Artyom Kiriliyk 24 Май 2014 в 12:17

Вы имеете в виду, как установить цвет, если произойдет какое-то событие? Если это так, вы можете установить цвет textView следующим образом:

  textView.setTextColor("give color-code"); 
0
Mukesh 30 Май 2014 в 10:38

Для этого нужно создать стиль. Используя стиль, вы можете изменять цвет текста, цвет фона и т. Д., Как хотите.

-1
laalto 21 Май 2014 в 06:33