GridView网格视图属性:

android:numColumns="auto_fit" --------列数设置为自动,可以为确定的数值
android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:verticalSpacing="10dp"----------各单元格垂直边距
android:horizontalSpacing="10dp"-------各单元格水平边距

android:stretchMode------设置拉伸模式

none:不拉伸

spacingWidth:缩放与列宽大小同步

columnWidth:缩放与列宽大小同步

GridView 按行,列的形式来组织显示多个组件,ListView是GridView的特例。使用adpater使用方法与ListView一样

1、准备数据源
2、新建适配器
3、加载适配器
GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的

MainActivity.java

package com.example.testgridview;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.SimpleAdapter;public class MainActivity extends Activity {private GridView gview;private List<Map<String, Object>> data_list;private SimpleAdapter sim_adapter;// 图片封装为一个数组private int[] icon = { R.drawable.address_book, R.drawable.calendar,R.drawable.camera, R.drawable.clock, R.drawable.games_control,R.drawable.messenger, R.drawable.ringtone, R.drawable.settings,R.drawable.speech_balloon, R.drawable.weather, R.drawable.world,R.drawable.youtube };private String[] iconName = { "通讯录", "日历", "照相机", "时钟", "游戏", "短信", "铃声","设置", "语音", "天气", "浏览器", "视频" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test);gview = (GridView) findViewById(R.id.gview);//新建Listdata_list = new ArrayList<Map<String, Object>>();//获取数据getData();//新建适配器String [] from ={"image","text"};int [] to = {R.id.image,R.id.text};sim_adapter = new SimpleAdapter(this, data_list, R.layout.item, from, to);//配置适配器gview.setAdapter(sim_adapter);}public List<Map<String, Object>> getData(){        //cion和iconName的长度是相同的,这里任选其一都可以for(int i=0;i<icon.length;i++){Map<String, Object> map = new HashMap<String, Object>();map.put("image", icon[i]);map.put("text", iconName[i]);data_list.add(map);}return data_list;}}

test.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" android:background="#000"><GridView android:id="@+id/gview"android:layout_width="match_parent"android:layout_height="wrap_content"android:numColumns="auto_fit"    android:columnWidth="80dp"android:stretchMode="columnWidth"></GridView>
</LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical" android:gravity="center"android:padding="10dp"><ImageView android:src="@drawable/ic_launcher"android:id="@+id/image"android:layout_width="60dp"android:layout_height="60dp"/><TextView android:id="@+id/text"android:layout_marginTop="5dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#ffffff"android:text="文字"/>
</LinearLayout>

另外一个:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<!-- GridView 组件的几个新属性 ,android:numColumns="4"该网格包含4列,包含多少行是动态改变的,由adapter决定--><GridViewandroid:id="@+id/gridView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:horizontalSpacing="1dp"       android:verticalSpacing="1dp" android:numColumns="4"></GridView>
<!-- ImageView组件 --><ImageViewandroid:id="@+id/imageView1"android:layout_width="240dp"android:layout_height="240dp"android:layout_gravity="center_horizontal"android:src="@drawable/bomb5" /></LinearLayout>

cell.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center_horizontal"android:padding="2pt">
<ImageViewandroid:id="@+id/image1"android:layout_width="50dp" android:layout_height="50dp" />
</LinearLayout>

MainActivity.java

package com.example.gridviewtest;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;public class MainActivity extends Activity {/** GridView 按行,列的形式来组织显示多个组件,ListView是GridView的特例。使用adpater使用方法与ListView一样* * */GridView grid;ImageView imageview;//图片的Idint[] imagesIds=new int[]{R.drawable.bomb5,R.drawable.bomb6,R.drawable.bomb7,R.drawable.bomb8,R.drawable.bomb9,R.drawable.bomb10,R.drawable.bomb11,R.drawable.bomb12,R.drawable.bomb13,R.drawable.bomb14,R.drawable.bomb15,R.drawable.bomb16       };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageview= (ImageView) findViewById(R.id.imageView1);//创建一个List对象,List独享的元素是MapList<Map<String,Object>> listitems=new ArrayList<Map<String,Object>>();for(int i=0;i<imagesIds.length;i++){Map<String,Object> item=new HashMap<String,Object>();item.put("image", imagesIds[i]);listitems.add(item);}//使用自定义的布局cell.xml定义SimpleAdapterSimpleAdapter ad=new SimpleAdapter(this,listitems,R.layout.cell,new String[]{"image"},new int[]{R.id.image1});grid=(GridView) findViewById(R.id.gridView1);//设置适配器grid.setAdapter(ad);//添加列表项被单击时的监听器grid.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubimageview.setImageResource(imagesIds[position]);}            });}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

UI组件之AdapterView及其子类(二)GridView网格视图的使用相关推荐

  1. UI组件之AdapterView及其子类(一)三种Adapter适配器填充ListView

    AdapterView的内容一般是包含多项相同格式资源的列表,常用的有5种AdapterView的子类: (1)ListView:简单的列表 (2)Spinner:下拉列表,给用户提供选择 (3)Ga ...

  2. UI组件之AdapterView及其子类关系,Adapter接口及其实现类关系

    AdapterView本身是一个抽象基类,它派生的的子类在用法上十分相似.AdapterView直接派生的三个子类:AbsListView,AbsSpinner,AdapterViewAnimator ...

  3. UI组件之AdapterView及其子类(四)Gallery画廊控件使用

    听说 Gallery现在已经不使用了,API使用ViewPaper代替了,以后再学专研ViewPaper吧现在说说Gallery画廊,就是不停显示图片的意思 Gallery是用来水平滚动的显示一系列项 ...

  4. UI组件之AdapterView及其子类(六)ExpandableListView组件和ExpandableListActivity的使用

    ExpandableListView是ListView的子类,他在ListView上进行了扩展,它把列表项分成了几组,每组里包含了多个列表项 ExpandableListView的列表项是由Expan ...

  5. UI组件之AdapterView及其子类(五)ListView组件和ListActivity

    ListView组件是一个显示组件,继承AdapterView基类,前面已经介绍了分别使用ArrayAdapter,SimpleAdapter,扩展BaseAdapter来为LisView提供列表项h ...

  6. UI组件之AdapterView及其子类(三)Spinner控件详解

    Spinner提供了从一个数据集合中快速选择一项值的办法.默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单或者一个dialog对话框,从该 ...

  7. ASP.NET中 DropDownList+GridView(网格视图)的使用前台绑定[高]

    ylbtech-ASP.NET-Control-Bind:DropDownList+GridView(网格视图)的使用前台绑定[高] ASP.NET中 DropDownList+GridView(网格 ...

  8. UI组件之TextView及其子类(二)RadioButton和CheckBox

    单选按钮(RadioButton)和复选框(CheckBox),状态开关按钮(ToggleButton),开关(Switch)都是普通的UI组件,都继承了Button类,因此都可以用Button的各种 ...

  9. GridView(网格视图)

    GridView 是按照行列的方式来显示内容的,一般用于显示图片列表,比如九宫格列表,使用 GridView实现起来很简单.GridView 的用法与ListView 类似,首先看图2-36,效果图中 ...

最新文章

  1. 六分钟学会创建Oracle表空间的步骤
  2. error: Upgrade DB using Essex release first.
  3. python第五单元答案_中国大学MOOC第五单元测试答案_数据结构与算法Python版慕课答案在哪里可以看...
  4. [OS复习]操作系统综述2
  5. 漫画:什么是桶排序?
  6. 傅里叶变换复数形式的实部代表什么_二维傅里叶变换与逆变换基于Unity的实现...
  7. auto semicolon insertion 自动分号补齐的坑
  8. 微信怎么接龙?手把手教你使用微信群接龙功能
  9. 杰理之设置立体声输出,播左右声道歌曲后DAC没有声音或声音变小
  10. android epub 开源,EPUB SDK
  11. python列表两两相减_【数据分析入门】之:如何用Python代替Excel(1)
  12. 【转载】sdcard中平添文件总是提示Failed to push the item(s)Failed to push XXXXX.txt on emulato...
  13. 50道HIVE练习题-搞定了这50题hive sql,那可不嘚直接通关起飞!!!
  14. Mysql我国省市区字典数据
  15. Python爬虫系列之MeiTuan优选商家端商品自动化管理(商品发布、商品排期、订单采集)
  16. Python+Selenium自动化测试项目实战
  17. java 调用火狐内核_[图文]自己动手做J浏览器——基于JAVA和火狐内核(gecko)
  18. 小米众筹防霾神器评测:颠覆设计,防霾新革命
  19. oracle数据库常用的关键字总结
  20. php表单转json对象,将表单数据转化为json数据

热门文章

  1. MATLAB随机信号统计特征
  2. java商品展示页面代码_java学习(十四)实现商品的展示、curd以及分页展示
  3. IPFS (1) 初步简介
  4. 区块链BaaS云服务(13)广州微链GGC全球游戏链(Global Game Chain)
  5. Crypto-Danciling line.(ascii 图像
  6. 公钥密码体制(RSA,椭圆曲线密码,ElGamal
  7. sh256sum、xxd、base64联合计算文件的hash
  8. 【颜值打分小程序】最火爆的“颜值测试”,做还是不做?(疯狂打call)
  9. python—时间复杂度
  10. 数据库开篇简介整体常识