vGridView:用于在界面上按行列分布的方式来显示多个组件。

vGridViewListView都继承自AbsListView,所以使用方法基本相同,差别在于,ListView只在一个方向上分布,而GridView在两个方向上分布。
v它们都需要Adapter来提供显示的数据,开发者可以通过SimpleAdapter或自己开发的BaseAdapter子类来为GridView提供数据。

  GridView常用属性

XML属性
相关方法
说明
android:columnWidth
setColumnWidth(int)
设置列宽度
android:gravity
setGravity(int)
设置对齐方式
android:horizontalSpacing
setHorizontalSpacing(int)
设置各元素间的水平间距
android:numColumns
setNumColumns(int)
设置列数
android:stretchMode
setStretchMode(int)
设置拉伸模式
android:verticalSpacing
setVerticalSpacing(int)
设置各元素间的垂直间距

主布局:

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > 
  6.  
  7.     <GridView 
  8.         android:id="@+id/grid_View" 
  9.         android:gravity="center" 
  10.         android:layout_width="fill_parent" 
  11.         android:layout_height="wrap_content" 
  12.         android:horizontalSpacing="1px" 
  13.         android:verticalSpacing="1px" 
  14.         android:numColumns="4" > 
  15.     </GridView> 
  16.  
  17.     <ImageView   
  18.         android:id="@+id/grid_p_w_picpath" 
  19.         android:layout_width="280dp" 
  20.         android:layout_height="280dp" 
  21.         android:src="@drawable/bomb10" 
  22.         android:layout_gravity="center_horizontal"/> 
  23. </LinearLayout> 

显示每个小图片的布局:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > 
  6.  
  7.     <ImageView   
  8.         android:id="@+id/grid_item" 
  9.         android:layout_width="50dp" 
  10.         android:layout_height="50dp"/> 
  11.     <TextView   
  12.         android:id="@+id/grid_id" 
  13.         android:layout_below="@+id/grid_item" 
  14.         android:layout_width="wrap_content" 
  15.         android:layout_height="wrap_content"/> 
  16.  
  17. </RelativeLayout> 

 

GridViewDemo网格视图_siyanpeng

同样是用到了simpleadapter类型:

  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.widget.AdapterView;  
  9. import android.widget.GridView;  
  10. import android.widget.ImageView;  
  11. import android.widget.SimpleAdapter;  
  12. import android.widget.AdapterView.OnItemClickListener;  
  13. import android.widget.AdapterView.OnItemSelectedListener;  
  14.  
  15. public class GridViewDemo extends Activity{  
  16.  
  17.     @Override 
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.gridview);  
  21.           
  22.         //设置数据list  
  23.         List<Map<String, Integer>> list=new ArrayList<Map<String,Integer>>();  
  24.         //添加图片id到数组  
  25.         final int[] p_w_picpathid=new int[]{  
  26.                 R.drawable.bomb5,R.drawable.bomb6,R.drawable.bomb7,R.drawable.bomb8,  
  27.                 R.drawable.bomb9,R.drawable.bomb10,R.drawable.bomb11,R.drawable.bomb12,  
  28.                 R.drawable.bomb13,R.drawable.bomb14,R.drawable.bomb15,R.drawable.bomb16  
  29.         };  
  30.         //用循环把图片id添加大数据list中  
  31.         for (int i = 0; i < p_w_picpathid.length; i++) {  
  32.             Map<String, Integer> aa=new HashMap<String, Integer>();  
  33.             aa.put("p_w_picpath", p_w_picpathid[i]);  
  34.             list.add(aa);  
  35.         }  
  36.         //定义simpleadapter  
  37.         SimpleAdapter sa=new SimpleAdapter(this, list, R.layout.gridview_2, new String[]{"p_w_picpath","id"}, new int[]{R.id.grid_item,R.id.grid_id});  
  38.         GridView iv=(GridView) findViewById(R.id.grid_View);  
  39.         iv.setAdapter(sa);  
  40.         //选择grid触发的事件.似乎没什么效果  
  41.         iv.setOnItemSelectedListener(new OnItemSelectedListener() {  
  42.  
  43.             @Override 
  44.             public void onItemSelected(AdapterView<?> parent, View view,  
  45.                     int position, long id) {  
  46. //                  ImageView p_w_picpathView=(ImageView) findViewById(R.id.grid_p_w_picpath);  
  47. //                  p_w_picpathView.setImageResource(p_w_picpathid[position]);  
  48.             }  
  49.             @Override 
  50.             public void onNothingSelected(AdapterView<?> parent) {  
  51.                   
  52.             }  
  53.         });  
  54.         //点击grid事件  
  55.         iv.setOnItemClickListener(new OnItemClickListener() {  
  56.  
  57.             @Override 
  58.             public void onItemClick(AdapterView<?> parent, View view,  
  59.                     int position, long id) {  
  60.                 ImageView p_w_picpathView=(ImageView) findViewById(R.id.grid_p_w_picpath);  
  61.                 p_w_picpathView.setImageResource(p_w_picpathid[position]);  
  62.             }  
  63.               
  64.         });  
  65.     }  
  66.