Android View的几种背景颜色设置

Android里面的一些View是需要设置颜色的,比如textView的字体颜色和背景颜色,大家都知道基本的设置颜色方法,setTextColor(Color.RED),setBackground(Color.RED),setBackgroundColor(Color.RED)等等。但是往往这些都达不到现实项目中的要求。
现在就举例说明几个我遇到的例子:
1、一个TextView,我们需要把它的背景颜色设置成红色,同时需要将这个控件变成圆角
设置颜色很简单,相信大家都知道了,但是这个圆角怎么设置呢?有的同学可能会说,这个很简单呀,我们叫美工帮忙做一个背景图片,圆角的红色的,把这个图片设置到xml布局文件里面相应的View就行了。不可否认,这个确实是一个办法,可行。
但是,如果现在有需求说红色不好看,要用蓝色,这个时候必须得重新做图片了,是不是很麻烦呢?也就是说这样做的可变性太低了,而且占资源。
现在,我们说说相对比较有效的方法

第一步,在res/drawble/文件下建一个test.xml文件

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.     <shape xmlns:android="http://schemas.android.com/apk/res/android"  
  3.        android:shape="rectangle" >  
  4.       <!-- 设置背景色为红色 -->  
  5.       <solid  android:color="@android:color/holo_red_light"/>  
  6.       <!-- 边框为灰色 -->  
  7.       <stroke android:width="2px"  android:color="@color/color_gray_deep"/>  
  8. <!-- 这里是圆角的半径-->  
  9.       <corners android:radius="3dip" />  
  10.     </shape>  

第二步,在需要设置背景的xml布局文件中设置
[html]  view plain  copy
  1. <TextView  
  2.           android:layout_width="fill_parent"  
  3.           android:layout_height="40dp"  
  4.           android:background="@drawable/test"  
  5.           android:gravity="center"  
  6.           android:text="test"/>  
这样就完成了我们的需求,而且不管怎么改变颜色,我们只需要在test.xml文件里面修改颜色即可。

2、前不久,我遇到了一个特殊情况,在做UI的时候,要求是圆角的有颜色的背景(同第一种情况),但是在接后台数据的时候,要求改变了,其中这个颜色需要改变,也就是在第一种情况中提到的情况,但是有区别,区别在于这个颜色是不确定的,这个颜色是后台传过来的"#D8FE54",我当时的第一反应是在拿到这个颜色的时候在代码中设置到TextView里面就行了。

第一个疑问来了,我们设置颜色的时候不知道大家发现没有,setBackground(?)里面的问好是int值,但是我们的数据却是String,怎么设置呢?其实很简单,将颜色泛型,Color.parseColor("#D8FE54")将这串代码替换掉?就行了。

    这个时候第二个问题来了,这样设置进去之后,圆角效果不见了。怎么办???不要着急,问题肯定是可以解决的,之前不是就说过test.xml文件里面的颜色是可以替换的吗,只是这里我们不能在text.xml文件里面进行操作了,我们需要在代码里面操作

[java]  view plain  copy
  1. GradientDrawable myGrad = (GradientDrawable) textView.getBackground ();  
  2.         myGrad.setColor (Color.parseColor (“#D8FE54”));  
  3.         textView.setBackgroundDrawable (myGrad);</span>  
 搞定收工

童鞋们,加油吧!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值