Android - Textview меняет цвет при изменении состояния - PullRequest
16 голосов
/ 02 декабря 2010

Как я могу применить цвет к различным состояниям (сфокусировано, нажата, включена) TextView?

Я уже упоминал это: http://developer.android.com/reference/android/content/res/ColorStateList.html, но не знаете, как применить список состояний цвета к TextView? или есть другой способ сделать это?

Обновление:

Я хочу изменить цвет фона.

Ответы [ 5 ]

34 голосов
/ 07 августа 2013

создать 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". Осторожно, используйте Android: цвет не 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>
15 голосов
/ 02 декабря 2010

Создать новый новый 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>
0 голосов
/ 30 ноября 2015
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
    }

});
0 голосов
/ 02 декабря 2010

Это легко. Просто перехватите желаемое событие и напишите что-нибудь вроде:

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);
0 голосов
/ 02 декабря 2010

Если вы хотите изменить цвет текста - вы создаете его в виде xml в папке res / color (например, res / color / mycolor.xml, а затем в вашем TextView вы назначаете ему цвет как android:textColor="@color/mycolor"

Для изменения фона см. Другой ответ.

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