您的位置:首页 > 移动开发 > Android开发

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>  

 搞定收工

童鞋们,加油吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android