Android - Textview change color on changing of state

后端 未结 5 1956
滥情空心
滥情空心 2020-11-30 11:14

How can I apply color on the various states(focused, pressed, enabled) of the TextView?

I have already referred this: http://developer.android.com/reference/android/

相关标签:
5条回答
  • 2020-11-30 11:37

    create xml under res/color dir.

    example file name : 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>
    

    you can add more states. you can use color code like "#ffffff" instead of predefined "@color/White". Becarefull, use android:color not android:drawable. this example changes color of text when pressed on it. set the textColor attribute to selector above.

    <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>
    
    0 讨论(0)
  • 2020-11-30 11:37
    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 讨论(0)
  • 2020-11-30 11:50

    Create new a new xml (in the drawable folder). with the color you can specify image for each event state
    and you can you can set this xml as you background

    if your xml is 'res/drawable/abc.xml' then set background as

    android:background="@drawable/abc"
    

    Edited to add color in state xml
    our 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>
    

    Then declare gray in your res\values\strings.xml

    <color name="gray">#808080</color>
    
    0 讨论(0)
  • 2020-11-30 11:50

    If you want to change color of the text - you create it as an xml in res/color folder ( for example res/color/mycolor.xml and then in your TextView you assig it color as android:textColor="@color/mycolor"

    For changing background see other answer.

    0 讨论(0)
  • 2020-11-30 11:57

    It's easy. Just intercept desired event and write 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);
    
    0 讨论(0)
提交回复
热议问题