`
iaiai
  • 浏览: 2147524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android之GridView(九宫图)

 
阅读更多
GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫图。GridView的用法很多,网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter,再供GridView使用,类似这种的方法本文不再重复。

先来贴出本文代码运行的结果:


main.xml源代码如下,本身是个GirdView,用于装载Item:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/gridview" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:numColumns="auto_fit"
	android:verticalSpacing="10dp" android:horizontalSpacing="10dp"
	android:columnWidth="90dp" android:stretchMode="columnWidth"
	android:gravity="center" />  

介绍一下里面的某些属性:
android:numColumns="auto_fit" ,GridView的列数设置为自动
android:columnWidth="90dp",每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth",缩放与列宽大小同步
android:verticalSpacing="10dp",两行之间的边距,如:行一(NO.0~NO.2)与行二(NO.3~NO.5)间距为10dp
android:horizontalSpacing="10dp",两列之间的边距。

gridview.xml布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_height="wrap_content" android:paddingBottom="4dip"
	android:layout_width="fill_parent">
	<ImageView android:layout_height="wrap_content" android:id="@+id/ItemImage"
		android:layout_width="wrap_content" android:layout_centerHorizontal="true">
	</ImageView>
	<TextView android:layout_width="wrap_content"
		android:layout_below="@+id/ItemImage" android:layout_height="wrap_content"
		android:text="TextView01" android:layout_centerHorizontal="true"
		android:id="@+id/ItemText">
	</TextView>
</RelativeLayout>


最后就是JAVA的源代码了,
@Override
	protected void onHanlder(Bundle savedInstanceState) {
		setContentView(R.layout.main);

		// 列表
		GridView gridview = (GridView) findViewById(R.id.gridview);

		// 生成适配器
		SimpleAdapter adapter = getSimpleAdapter();
		// 添加并且显示
		gridview.setAdapter(adapter);
		// 添加消息处理
		gridview.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// 在本例中arg2=arg3
				Map<String, Object> item = (Map<String, Object>) arg0
						.getItemAtPosition(arg2);
				// 显示所选Item的ItemText
				setTitle(item.get(Attribute.GRID_VIEW_ID).toString());
			}
		});
	}

	/**
	 * 获取数据生成适配器
	 * 
	 * @return
	 */
	private SimpleAdapter getSimpleAdapter() {
		// 生成动态数组,并且转入数据
		List<Map<String, Object>> grid = new ArrayList<Map<String, Object>>();
		for (int i = 0; i < 10; i++) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put(Attribute.GRID_VIEW_ID, i + 1);
			map.put(Attribute.GRID_VIEW_IMG, R.drawable.icon);// 添加图像资源的ID
			map.put(Attribute.GRID_VIEW_TEXT, "NO." + String.valueOf(i));// 按序号做ItemText
			grid.add(map);
		}

		// 生成适配器
		SimpleAdapter adapter = new SimpleAdapter(this, grid,
				R.layout.gridview, new String[] { Attribute.GRID_VIEW_IMG,
						Attribute.GRID_VIEW_TEXT }, new int[] { R.id.ItemImage,
						R.id.ItemText });

		return adapter;
	}
  • 大小: 25.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics