GridView网格控件

            一.GridView控件用于显示一个网格图像, GridView主要是用在一些相册的布局显示图片。
GridView采用的是二维表的方式显示单元格,就需要设置二维表的行和列。设置GridView的列可以使用<GridView>标签的columnWidth属性。也可以使用GridView类的setColumnWidth方法来设置列数,
GridView中的单元格会根据列数自动拆行显示,因此不需要设置GridView的行数,但是需要设置android:numColumns属性。否则GridView只会显示一行。

    二.下面是GridView的实列:

  

在main.xml文件中:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical">
 6     <GridView 
 7         android:id="@+id/gridview"
 8         android:layout_width="fill_parent"
 9         android:layout_height="0dp"
10         android:numColumns="4"
11         android:horizontalSpacing="1dp"
12         android:verticalSpacing="1dp"
13         android:layout_weight="1"
14         android:gravity="fill">
15     </GridView>
16     <LinearLayout 
17         android:layout_width="fill_parent"
18         android:layout_height="0dp"
19         android:layout_weight="2">  
20         <ImageView 
21             android:id="@+id/imageview"
22             android:layout_width="fill_parent"
23             android:layout_height="fill_parent"/>
24     </LinearLayout>  
25 </LinearLayout>

在cell.xml文件中:

 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    <ImageView 
 7                android:id="@+id/cellImageview"
 8                android:layout_width="100dp"
 9                android:layout_height="100dp"
10                android:adjustViewBounds="true"
11                android:scaleType="fitCenter"/>
12 </LinearLayout>

在.java文件中:

 1 private ImageView imageView;
 2     private GridView gridView;
 3     private int[] imageId = {R.drawable.gril1,R.drawable.gril2,R.drawable.gril3,R.drawable.gril4,R.drawable.gril5,
 4                               R.drawable.gril6,R.drawable.gril7,R.drawable.gril8,R.drawable.gril9,R.drawable.gril10,
 5                               R.drawable.gril11,R.drawable.gril12,R.drawable.gril13,R.drawable.gril14,R.drawable.gril15,
 6                               R.drawable.gril16,R.drawable.gril17,R.drawable.gril18,R.drawable.gril19,R.drawable.gril20};
 7                       
 8     @Override
 9     protected void onCreate(Bundle savedInstanceState) {
10         super.onCreate(savedInstanceState);
11         requestWindowFeature(Window.FEATURE_NO_TITLE);
12         setContentView(R.layout.main);
13         
14         imageView = (ImageView) findViewById(R.id.imageview);
15         imageView.setImageResource(imageId[0]);
16         
17         gridView = (GridView) findViewById(R.id.gridview);
18         List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
19         Map<String,Object> map = null;
20         for(int i = 0;i < imageId.length;i++){
21             map = new HashMap<String, Object>();
22             map.put("imageId", imageId[i]);
23             list.add(map);
24         }
25         
26         SimpleAdapter adapter = new SimpleAdapter(this, list,R.layout.cell, new String[]{"imageId"}, new int[]{R.id.cellImageview});
27         gridView.setAdapter(adapter);
28         gridView.setOnItemSelectedListener(new OnItemSelectedListener() {
29 
30             @Override
31             public void onItemSelected(AdapterView<?> parent, View view,
32                     int position, long id) {
33                 // TODO 自动生成的方法存根
34                 imageView.setImageResource(imageId[position]);
35             }
36 
37             @Override
38             public void onNothingSelected(AdapterView<?> parent) {
39                 // TODO 自动生成的方法存根
40                 
41             }
42         });
43         
44         gridView.setOnItemClickListener(new OnItemClickListener() {
45 
46             @Override
47             public void onItemClick(AdapterView<?> parent, View view,
48                     int position, long id) {
49                 // TODO 自动生成的方法存根
50                 imageView.setImageResource(imageId[position]);
51             }
52         });
53         
54         
55     }

运行结果:

转载于:https://www.cnblogs.com/SoulCode/p/5399434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GridView是Android中的一个常用布局控件,可以将多个子视图以网格的形式进行排列。我们可以通过设置GridView的列数和每个子视图的宽高来实现不同的布局效果。下面是GridView控件的使用步骤: 1.在布局文件中添加GridView控件。 ``` <GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3" /> ``` 2.创建一个Adapter类用于为GridView提供数据,并在Activity中设置Adapter。 ``` public class ImageAdapter extends BaseAdapter { private Context mContext; // 构造函数 public ImageAdapter(Context c) { mContext = c; } // 获取子视图的个数 public int getCount() { return mThumbIds.length; } // 获取子视图在数据集中的位置 public Object getItem(int position) { return null; } // 获取子视图的ID public long getItemId(int position) { return 0; } // 创建子视图 public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // 如果convertView为空,则创建一个新的ImageView imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(100, 100)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); } else { // 如果convertView不为空,则复用之前创建的ImageView imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } // 图片资源数组 private Integer[] mThumbIds = { R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4, R.drawable.image5, R.drawable.image6, R.drawable.image7, R.drawable.image8, R.drawable.image9 }; } ``` 在Activity中设置Adapter: ``` GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this)); ``` 3.运行程序,查看GridView显示的效果。 以上就是GridView控件的基本使用方法。通过设置Adapter和子视图的宽高等属性,我们可以实现不同的网格布局效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值