Android TextView 动态设置颜色

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错

问题描述

最近写程序就遇到了这么个难题,在TextView 上,正常字体颜色显示是黑色。如果在activity中动态的改变字体颜色(预期目标是字体颜色变成红色),无论如何都是灰色,简单代码如下所示。郁闷了好些时日。

private TextView mTextDisp;
mTextDisp = (TextView) findViewById(R.id.textDisp_mian);
mTextDisp.setTextColor(R.color.red);//(使用color.xml文件中的颜色值)

这样写是怎么也变不成红色的,而且程序不报错,不知道朋友们有没有试过。而且debug所走的分支也是正确的。
我就单独写了一个Demo来测试,结果还是灰色。
有的朋友问,是不是red的颜色值写错了。不是,color中的颜色值配置对着呢。

解决

其实,答案很简单,就错在mTextDisp.setTextColor(R.color.red);这行代码上。

  1. 首先,在xml中不要写默认的字体颜色值,即android:textColor="xxx"
  2. 其次,在activity中mTextDisp.setTextColor(context.getResources().getColor(R.color.red));(使用color.xml文件中的颜色值)
    这样就OK了。或者直接使用Color类中的值:mTextDisp.setTextColor(Color.RED);(使用系统自带的颜色类Color类中的颜色值)
    或者直接使用颜色值:mTextDisp.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据,分组一下0x|ff|ff00ff,0x是代表颜色整数的标记,ff是表示透明度,ff00ff表示颜色,注意:这里ffff00ff必须是8个的颜色表示,不接受ff00ff这种6个的颜色表示。

ps

点进去看下文档就知道了。需要的是颜色值,而R.color.red只是一个int。类似于一个key,value才是真正的颜色值。key->value表就是对应的xml文件。

未经允许不得转载:演道网 » Android TextView 动态设置颜色

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册