Android View的几种背景颜色设置
2016-03-30 16:22
357 查看
Android里面的一些View是需要设置颜色的,比如textView的字体颜色和背景颜色,大家都知道基本的设置颜色方法,setTextColor(Color.RED),setBackground(Color.RED),setBackgroundColor(Color.RED)等等。但是往往这些都达不到现实项目中的要求。
现在就举例说明几个我遇到的例子:
1、一个TextView,我们需要把它的背景颜色设置成红色,同时需要将这个控件变成圆角
设置颜色很简单,相信大家都知道了,但是这个圆角怎么设置呢?有的同学可能会说,这个很简单呀,我们叫美工帮忙做一个背景图片,圆角的红色的,把这个图片设置到xml布局文件里面相应的View就行了。不可否认,这个确实是一个办法,可行。
但是,如果现在有需求说红色不好看,要用蓝色,这个时候必须得重新做图片了,是不是很麻烦呢?也就是说这样做的可变性太低了,而且占资源。
现在,我们说说相对比较有效的方法
第一步,在res/drawble/文件下建一个test.xml文件
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 设置背景色为红色 -->
<solid android:color="@android:color/holo_red_light"/>
<!-- 边框为灰色 -->
<stroke android:width="2px" android:color="@color/color_gray_deep"/>
<!-- 这里是圆角的半径-->
<corners android:radius="3dip" />
</shape>
第二步,在需要设置背景的xml布局文件中设置
[html] view
plain copy
<TextView
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="@drawable/test"
android:gravity="center"
android:text="test"/>
这样就完成了我们的需求,而且不管怎么改变颜色,我们只需要在test.xml文件里面修改颜色即可。
2、前不久,我遇到了一个特殊情况,在做UI的时候,要求是圆角的有颜色的背景(同第一种情况),但是在接后台数据的时候,要求改变了,其中这个颜色需要改变,也就是在第一种情况中提到的情况,但是有区别,区别在于这个颜色是不确定的,这个颜色是后台传过来的"#D8FE54",我当时的第一反应是在拿到这个颜色的时候在代码中设置到TextView里面就行了。
第一个疑问来了,我们设置颜色的时候不知道大家发现没有,setBackground(?)里面的问好是int值,但是我们的数据却是String,怎么设置呢?其实很简单,将颜色泛型,Color.parseColor("#D8FE54"),将这串代码替换掉?就行了。
这个时候第二个问题来了,这样设置进去之后,圆角效果不见了。怎么办???不要着急,问题肯定是可以解决的,之前不是就说过test.xml文件里面的颜色是可以替换的吗,只是这里我们不能在text.xml文件里面进行操作了,我们需要在代码里面操作
[java] view
plain copy
GradientDrawable myGrad = (GradientDrawable) textView.getBackground ();
myGrad.setColor (Color.parseColor (“#D8FE54”));
textView.setBackgroundDrawable (myGrad);</span>
搞定收工
童鞋们,加油吧!
现在就举例说明几个我遇到的例子:
1、一个TextView,我们需要把它的背景颜色设置成红色,同时需要将这个控件变成圆角
设置颜色很简单,相信大家都知道了,但是这个圆角怎么设置呢?有的同学可能会说,这个很简单呀,我们叫美工帮忙做一个背景图片,圆角的红色的,把这个图片设置到xml布局文件里面相应的View就行了。不可否认,这个确实是一个办法,可行。
但是,如果现在有需求说红色不好看,要用蓝色,这个时候必须得重新做图片了,是不是很麻烦呢?也就是说这样做的可变性太低了,而且占资源。
现在,我们说说相对比较有效的方法
第一步,在res/drawble/文件下建一个test.xml文件
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 设置背景色为红色 -->
<solid android:color="@android:color/holo_red_light"/>
<!-- 边框为灰色 -->
<stroke android:width="2px" android:color="@color/color_gray_deep"/>
<!-- 这里是圆角的半径-->
<corners android:radius="3dip" />
</shape>
第二步,在需要设置背景的xml布局文件中设置
[html] view
plain copy
<TextView
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="@drawable/test"
android:gravity="center"
android:text="test"/>
这样就完成了我们的需求,而且不管怎么改变颜色,我们只需要在test.xml文件里面修改颜色即可。
2、前不久,我遇到了一个特殊情况,在做UI的时候,要求是圆角的有颜色的背景(同第一种情况),但是在接后台数据的时候,要求改变了,其中这个颜色需要改变,也就是在第一种情况中提到的情况,但是有区别,区别在于这个颜色是不确定的,这个颜色是后台传过来的"#D8FE54",我当时的第一反应是在拿到这个颜色的时候在代码中设置到TextView里面就行了。
第一个疑问来了,我们设置颜色的时候不知道大家发现没有,setBackground(?)里面的问好是int值,但是我们的数据却是String,怎么设置呢?其实很简单,将颜色泛型,Color.parseColor("#D8FE54"),将这串代码替换掉?就行了。
这个时候第二个问题来了,这样设置进去之后,圆角效果不见了。怎么办???不要着急,问题肯定是可以解决的,之前不是就说过test.xml文件里面的颜色是可以替换的吗,只是这里我们不能在text.xml文件里面进行操作了,我们需要在代码里面操作
[java] view
plain copy
GradientDrawable myGrad = (GradientDrawable) textView.getBackground ();
myGrad.setColor (Color.parseColor (“#D8FE54”));
textView.setBackgroundDrawable (myGrad);</span>
搞定收工
童鞋们,加油吧!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories