Handler動態改變TextView背景和字體顏色

最近寫程序就遇到了這麼個難題,在TextView 上,正常字體顏色顯示是黑色。如果在activity中動態的改變字體顏色(預期目標是字體顏色變成紅色),無論如何都是灰顯,簡單代碼如下所示。
private TextView tv;
tv= (TextView) findViewById(R.id.textDisp_mian);
tv.setTextColor(R.color.red);(使用color.xml文件中的顏色值)
這樣寫是怎麼也變不成紅色的,而且程序不報錯,不知道朋友們有沒有試過。而且debug所走的分支也是正確的。
我就單獨寫了一個Demo來測試,結果還是灰顯。

有的朋友要說,是不是red的顏色值寫錯了。不是,color中的顏色值配置對着呢。


解決方法:

其實,答案很簡單,就錯在tv.setTextColor(R.color.red);這行代碼上。
首先,在xml中不要寫默認的字體顏色值,即android:textColor="xxx"

其次,在activity中tv.setTextColor(context.getResources().getColor(R.color.red));(使用color.xml文件中的顏色值)


這樣就OK了。或者直接使用Color類中的值:tv.setTextColor(Color.RED);(使用系統自帶的顏色類Color類中的顏色值)
或者直接使用顏色值:mTextDisp.setTextColor(0xffff00ff);//0xffff00ff是int類型的數據,分組一下0x|ff|ff00ff,0x是代表顏色整數的標記,ff是表示透明度,ff00ff表示顏色,注意:這裏ffff00ff必須是8個的顏色表示,不接受ff00ff這種6個的顏色表示。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章