使用一个shape.xml文件,使用代码设置不同圆角背景颜色

给一个View设置一个圆角的背景颜色,我们一般会使用xml文件设置,使用<shape>节点设置,但是如果我们对一系列的View设置圆角北京,并且背景颜色色值不同,那么我们第一感觉想到的是创建多个xml文件,更改solid填充背景,其实我们可以使用一个xml文件就可以搞定,使用代码更改里面的填充颜色色值。废话不多话,看代码。

效果:

首先:创建activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <GridView
        android:id="@+id/gv_gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="10dp"
        android:numColumns="4"
        android:verticalSpacing="10dp" >
    </GridView>

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

	private GridView gdview;
	private Context mContext;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mContext = MainActivity.this;
		gdview = (GridView) findViewById(R.id.gv_gridview);
		initDate();
	}

	private void initDate() {
		List<String> lists = new ArrayList<String>();
		lists.add("颜色1");
		lists.add("颜色2");
		lists.add("颜色3");
		lists.add("颜色4");
		lists.add("颜色5");
		lists.add("颜色6");
		lists.add("颜色7");
		lists.add("颜色8");
		lists.add("颜色9");
		lists.add("颜色10");
		lists.add("颜色11");
		lists.add("颜色12");
		gdview.setAdapter(new MyGridViewAdapter(mContext, lists));
	}

}

下面新建自定义适配器MyGridViewAdapter.java

public class MyGridViewAdapter extends BaseAdapter {

	private Context mContext;
	private List<String> data;// 显示的数据
	private int[] colors = { R.color.item1, R.color.item2, R.color.item3,
			R.color.item4, R.color.item5, R.color.item6, R.color.item7,
			R.color.item8, R.color.item9, R.color.item10, R.color.item11,
			R.color.item12 };// 颜色色值id数组

	public MyGridViewAdapter(Context mContext, List<String> data) {
		super();
		this.mContext = mContext;
		this.data = data;
	}

	@Override
	public int getCount() {
		if (data == null) {
			return 0;
		}
		return data.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return data.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = View.inflate(mContext, R.layout.item_griview, null);
			holder.tv_item = (TextView) convertView.findViewById(R.id.tv_item);
			holder.tv_item.setBackgroundResource(R.drawable.circle);
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		String item = (String) getItem(position);
		holder.tv_item.setText(item);
		// 获取背景颜色,并且改变颜色
		GradientDrawable myGrad = (GradientDrawable) holder.tv_item
				.getBackground();
		myGrad.setColor(mContext.getResources().getColor(getColor(position)));
		return convertView;
	}

	/**
	 *
	 * @方法名称:getColor
	 * @描述: TODO
	 * @创建人:yang
	 * @创建时间:2014年9月30日 下午3:06:04
	 * @备注:获取背景的颜色的色值
	 * @param position
	 * @return
	 * @返回类型:int
	 */
	public int getColor(int position) {
		if (position < colors.length) {
			return colors[position];
		} else {
			return colors[position % colors.length];
		}
	}

	class ViewHolder {
		TextView tv_item;
	}
}

item_griview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_item"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="5dp" />

</LinearLayout>

提前在res/vlaues/color.xml中增加背景颜色色值

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="item1">#eed776</color>
    <color name="item2">#f2a96b</color>
    <color name="item3">#7fda54</color>
    <color name="item4">#aaaae1</color>
    <color name="item5">#d785de</color>
    <color name="item6">#a8a8e2</color>
    <color name="item7">#91d56c</color>
    <color name="item8">#d4ac65</color>
    <color name="item9">#7ac7c6</color>
    <color name="item10">#f09292</color>
    <color name="item11">#83b4e4</color>
    <color name="item12">#d7d87e</color>
</resources>

如果想显示的背景的个数,背景颜色的色值和内容,可以在values中做相应的变化。

源码下载地址:http://download.csdn.net/detail/forwardyzk/7993463

时间: 2024-10-11 11:25:12

使用一个shape.xml文件,使用代码设置不同圆角背景颜色的相关文章

SAX解析XML文件实例代码

import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.s

spring将service添加事务管理,在applicationContext.xml文件中的设置

在applicationContext.xml文件中的设置为: 1 <beans> 2 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 3 <property name="dataSource" ref="dataSource"

Android Button Maker(在线生成android shape xml文件的工具),真方便!

直接上地址:http://angrytools.com/android/button/ 使用起来超简单,如图: Android Button Maker is online tool to generate buttons code for Android Apps. Android API provide Drawable Resources where XML file defines geometric shape, including colors, border and gradien

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据

为每一个table单元格设置不同的背景颜色

为每一个table单元格设置不同的背景颜色: 本章节介绍一下如何给表格的每一个单元格设置一个背景颜色,当然这里的方法比较笨拙,主要面向初学者. 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.51texiao.cn/" /> <tit

linux BASH shell下设置字体及背景颜色

BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

设置Delphi IDE背景颜色为全黑色,类似VS2017 深色

使用Delphi IDE Colorizer 设置Delphi IDE背景颜色.效果如下 插件下载地址 http://download.csdn.net/detail/liangchua/9673553

设置 tableview 的背景 颜色 和清空

表示图中Cell默认是不透明的,那么在设置表示图的背景颜色和图片时通常是看不到的 1.给tableView设置背景view UIImageView *backImageView=[[UIImageViewalloc]initWithFrame:self.view.bounds]; [backImageView setImage:[UIImage imageNamed:@"liaotianbeijing"]]; self.tableView.backgroundView=backImag

用图片来设置View的背景颜色(结合Quartz2D)

         UIImage *oldImage = [UIImage imageNamed:@"car"];          //旧图片的尺寸和View不匹配,使用Quartz2D生成新图片     UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.0);     [oldImage drawInRect:self.view.bounds];     UIImage *newImage = UI