Android里面的一些View是需要设置颜色的,比如textView的字体颜色和背景颜色,大家都知道基本的设置颜色方法,setTextColor(Color.RED),setBackground(Color.RED),setBackgroundColor(Color.RED)等等。但是往往这些都达不到现实项目中的要求。
现在就举例说明几个我遇到的例子:
1、一个TextView,我们需要把它的背景颜色设置成红色,同时需要将这个控件变成圆角
设置颜色很简单,相信大家都知道了,但是这个圆角怎么设置呢?有的同学可能会说,这个很简单呀,我们叫美工帮忙做一个背景图片,圆角的红色的,把这个图片设置到xml布局文件里面相应的View就行了。不可否认,这个确实是一个办法,可行。
但是,如果现在有需求说红色不好看,要用蓝色,这个时候必须得重新做图片了,是不是很麻烦呢?也就是说这样做的可变性太低了,而且占资源。
现在,我们说说相对比较有效的方法
第二步,在需要设置背景的xml布局文件中设置 这样就完成了我们的需求,而且不管怎么改变颜色,我们只需要在test.xml文件里面修改颜色即可。
现在就举例说明几个我遇到的例子:
1、一个TextView,我们需要把它的背景颜色设置成红色,同时需要将这个控件变成圆角
设置颜色很简单,相信大家都知道了,但是这个圆角怎么设置呢?有的同学可能会说,这个很简单呀,我们叫美工帮忙做一个背景图片,圆角的红色的,把这个图片设置到xml布局文件里面相应的View就行了。不可否认,这个确实是一个办法,可行。
但是,如果现在有需求说红色不好看,要用蓝色,这个时候必须得重新做图片了,是不是很麻烦呢?也就是说这样做的可变性太低了,而且占资源。
现在,我们说说相对比较有效的方法
第一步,在res/drawble/文件下建一个test.xml文件
第二步,在需要设置背景的xml布局文件中设置 这样就完成了我们的需求,而且不管怎么改变颜色,我们只需要在test.xml文件里面修改颜色即可。
2、前不久,我遇到了一个特殊情况,在做UI的时候,要求是圆角的有颜色的背景(同第一种情况),但是在接后台数据的时候,要求改变了,其中这个颜色需要改变,也就是在第一种情况中提到的情况,但是有区别,区别在于这个颜色是不确定的,这个颜色是后台传过来的"#D8FE54",我当时的第一反应是在拿到这个颜色的时候在代码中设置到TextView里面就行了。
第一个疑问来了,我们设置颜色的时候不知道大家发现没有,setBackground(?)里面的问好是int值,但是我们的数据却是String,怎么设置呢?其实很简单,将颜色泛型,Color.parseColor("#D8FE54"),将这串代码替换掉?就行了。
这个时候第二个问题来了,这样设置进去之后,圆角效果不见了。怎么办???不要着急,问题肯定是可以解决的,之前不是就说过test.xml文件里面的颜色是可以替换的吗,只是这里我们不能在text.xml文件里面进行操作了,我们需要在代码里面操作
搞定收工
童鞋们,加油吧!