Android - изменение цвета текста при изменении состояния
Как я могу применить цвет к различным состояниям (сфокусированным, нажатым, включенным) TextView?
Я уже говорил об этом: http://developer.android.com/reference/android/content/res/ColorStateList.html, но не знаю, как я могу применить список состояний цвета к TextView? или есть ли другой способ сделать это?
Обновление:
Я хочу изменить цвет фона.
Ответы
Ответ 1
Создайте новый xml
(в папке drawable
). с цветом вы можете указать изображение для каждого состояния
и вы можете установить этот xml в качестве фона
если ваш xml равен 'res/drawable/abc.xml
', тогда установите фон как
android:background="@drawable/abc"
Отредактировано для добавления цвета в состояние xml
наш xml, res/drawable/abc.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@color/gray" />
</selector>
Затем объявить серый в your res\values\strings.xml
<color name="gray">#808080</color>
Ответ 2
создать xml под res/color dir.
имя файла примера: selector_white_gray.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="@color/Gray"/> <!-- pressed -->
<item android:color="@color/White"/> <!-- default -->
</selector>
вы можете добавить больше состояний. вы можете использовать цветовой код типа "#ffffff" вместо предопределенного "@color/White".
Becarefull, используйте android: color not android: drawable. этот пример изменяет цвет текста при нажатии на него. установите атрибут textColor для выбора выше.
<TextView
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textColor="@color/selector_white_gray"
android:textSize="18sp"
android:textStyle="bold" >
</TextView>
Ответ 3
Если вы хотите изменить цвет текста - вы создаете его как xml в папке res/color (например res/color/mycolor.xml
а затем в TextView вы укажете цвет как android:textColor="@color/mycolor"
Для изменения фона см. другой ответ.
Ответ 4
Это легко. Просто перехватите желаемое событие и напишите smth like:
TextView textView=(TextView)findViewById(R.id.myText);
String s=getString(R.string.myText);
SpannableString ss=new SpannableString(s);
ss.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss);
Ответ 5
textView = (TextView)findViewById(R.id.myTextView);
mMainView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
textView.setTextColor(Color.GREEN);//set the color here
}
});