属性名称
描述
android:columnWidth
设置列的宽度。
android:gravity
设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。
android:horizontalSpacing
两列之间的间距。
android:numColumns
设置列数。
android:stretchMode
缩放模式。
android:verticalSpacing
两行之间的间距。
案例一:
1.定义一个布局文件:
01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03android:layout_width="wrap_content"
04android:layout_height="wrap_content">
05<GridView
06android:id="@+id/gridview_main"
07android:layout_width="wrap_content"
08android:layout_height="wrap_content"
09android:numColumns="auto_fit"
10android:verticalSpacing="1dp"
11android:horizontalSpacing="1dp"
12android:columnWidth="90dp"
13android:stretchMode="columnWidth"
14android:gravity="center"
15>
16</GridView>
17 </LinearLayout>
android:numColumns="auto_fit"--列数设置为自动;
1 android:columnWidth="90dp"--每列的列宽,也就是item的宽度
1 android:verticalSpacing="1dp"--两行之间的边距
1 android:horizontalSpacing="1dp"--两列之间的边距
1 android:stretchMode="columnWidth"--缩放与列宽大小同步
2。接下来定义
01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03android:layout_width="wrap_content"
04android:layout_height="wrap_content"
05android:orientation="vertical"
06>
07<ImageView
08android:id="@+id/gridview_imageview"
09android:layout_width="wrap_content"
10android:layout_height="wrap_content"
11>
12</ImageView>
13<TextView
14android:id="@+id/gridview_textview"
15android:layout_width="wrap_content"
16android:layout_height="wrap_content"
17android:text="TextView01"
18android:gravity="center"
19/>
20 </LinearLayout>
3.最后定义Java的源代码了,
01 package com.test;
02 import java.util.ArrayList;
03 import java.util.HashMap;
04 import android.app.Activity;
05 import android.os.Bundle;
06 import android.view.View;
07 import android.widget.AdapterView;
08 import android.widget.AdapterView.OnItemClickListener;
09 import android.widget.GridView;
10 import android.widget.SimpleAdapter;
11 public class GridViewDemo extends Activity {
12int [] image={R.drawable.android,R.drawable.blackberry,R.drawable.windowshone,R.drawable.windowshone,R.drawable.blackberry,R.drawable.android,R.drawable.windowshone,R.drawable.ios,R.drawable.blackberry};
13private GridView gridView;
14@Override
15protected void onCreate(Bundle savedInstanceState) {
16// TODO Auto-generated method stub
17super.onCreate(savedInstanceState);
18
19setContentView(R.layout.gridview_main);
20
21gridView = (GridView)findViewById(R.id.gridview_main);
22//生成动态数组,并且转入数据
23ArrayList<HashMap<String, Object>>list=new ArrayList<HashMap<String,Object>>();
24
25for(int i=0;i<9;i++)
26{
27HashMap<String, Object>map = new HashMap<String, Object>();
28
29map.put("ItemImage", image[i]);//添加图像资源的ID
30map.put("itemtext","Amigos_pop-"+String.valueOf(i));
31list.add(map);
32}
33//生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
34SimpleAdapteradapter=new SimpleAdapter(this, //数据来源
35list,R.layout.gridview_item,//XML实现
36new String[]{"ItemImage","itemtext"}, //动态数组与ImageItem对应的子项
37new int[]{R.id.gridview_imageview,R.id.gridview_textview}////ImageItem的XML文件里面的一个ImageView,两个TextView ID
38);
39//添加并且显示
40gridView.setAdapter(adapter);
41//添加消息处理
42gridView.setOnItemClickListener(clickListener);
43}
44//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件
45privateOnItemClickListenerclickListener=new OnItemClickListener() {
46
47@Override
48public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened
49View arg1,//The view within the AdapterView that was clicked
50int arg2,//The position of the view in the adapter
51long arg3//The row id of the item that was clicked
52)
53{
54
55HashMap<String, Object>item=(HashMap<String, Object>)arg0.getItemAtPosition(arg2);
56
57setTitle((String)item.get("itemtext"));
58}
59};
60 }
4:执行效果:
===============================================================================
案例二:同样的效果:
布局文件使用上面一样的:
定义一个ImageAdapter类,此类继承BaseAdapter如下:
01 package com.test;
02
03 import android.content.Context;
04 import android.view.View;
05 import android.view.ViewGroup;
06 import android.widget.BaseAdapter;
07 import android.widget.GridView;
08 import android.widget.ImageView;
09
10 public class GridViewAdapter extends BaseAdapter {
11
12//定义Context
13private ContextmContext;
14
15//定义整形数组 (图片资源)
16privateint []mimages=
17{
18R.drawable.android,R.drawable.blackberry,R.drawable.windowshone,
19R.drawable.windowshone,R.drawable.blackberry,R.drawable.android,
20R.drawable.windowshone,R.drawable.ios,R.drawable.blackberry
21
22};
23
24public GridViewAdapter(Contextc)
25{
26mContext=c;
27}
28
29//获取图片的个数
30@Override
31public int getCount() {
32// TODO Auto-generated method stub
33return mimages.length;
34}
35// 获取图片在库中的位置www.2cto.com
36@Override
37public Object getItem(int position) {
38// TODO Auto-generated method stub
39return position;
40}
41
42//获取图片ID
43@Override
44public long getItemId(int position) {
45// TODO Auto-generated method stub
46return position;
47}
48
49@Override
50public View getView(int position, View convertView, ViewGroup parent)
51{
52ImageView mimageView;
53if(convertView==null)
54{
55//给Imageview设置资源
56mimageView = new ImageView(mContext);
57//设置布局图片120*120显示
58
59mimageView.setLayoutParams(new GridView.LayoutParams(85, 85));
60
61mimageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
62
63mimageView.setPadding(8, 8, 8, 8);
64}else
65{
66mimageView=(ImageView) convertView;
67}
68mimageView.setImageResource(mimages[position]);
69return mimageView;
70}
71 }
01 package com.test;
02 import java.util.ArrayList;
03 import java.util.HashMap;
04 import android.app.Activity;
05 import android.os.Bundle;
06 import android.view.View;
07 import android.widget.AdapterView;
08 import android.widget.AdapterView.OnItemClickListener;
09 import android.widget.GridView;
10 import android.widget.SimpleAdapter;
11 import android.widget.Toast;
12 public class GridViewDemo_2 extends Activity {
13private GridViewgridView;
14@Override
15protected void onCreate(Bundle savedInstanceState) {
16// TODO Auto-generated method stub
17super.onCreate(savedInstanceState);
18setContentView(R.layout.gridview_main);
19
20gridView = (GridView)findViewById(R.id.gridview_main);
21
22gridView.setAdapter(new GridViewAdapter(this));//调用GridViewAdapter
23
24gridView.setOnItemClickListener(clickListener);
25}
26
27privateOnItemClickListenerclickListener =new OnItemClickListener() {
28
29@Override
30public void onItemClick(AdapterView<?> arg0, View arg1, int position,
31long id) {
32Toast.makeText(GridViewDemo_2.this, ""+position,Toast.LENGTH_SHORT).show();//显示信息;
33
34}
35};
36 }
效果:
作者:amigos_pop