xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.gridviewdemo.MainActivity" > <!-- GridView是可滚动的网格,一般用来显示多张图片。
android:horizontalSpacing="10dp"两列之间的间距是10dp
android:numColumns="auto_fit"自动分配(安卓自提供),也可些一行显示几个
android:verticalSpacing="10dp" 两行之间的间距是10dp
android:stretchMode="spacingWidth"缩放与列宽大小同步
-->
<GridView
android:id="@+id/gridView_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_horizontal"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:verticalSpacing="10dp" >
</GridView>
<!-- 运行效果中,各列之间的间距大于10dp,是因为将列数设为了3行,因此会平均分布 -->
</LinearLayout>

item.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:gravity="center"
android:background="#000000">
<ImageView
android:id="@+id/image"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/address_book"
/> <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:layout_marginTop="5dp"
android:text="名字"/> </LinearLayout>

源代码:

package com.example.gridviewdemo;

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.util.Log;
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.SimpleAdapter;
import android.widget.Toast; /*
* GridView:以以网格形式显示页面
* 创建GridView的步骤:
* 1.准备数据源
* 2.新建适配器(SimpleAdapter)
* 3、GridView加载适配器
* 4.Gridview配置事件监听器(OnItemClickListener)
*/
public class MainActivity extends Activity implements OnItemClickListener {
private GridView gridView;
private SimpleAdapter adapter;
private List<Map<String, Object>> list;
private String[] iconNames; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView_1);
list = new ArrayList<Map<String, Object>>();
adapter = new SimpleAdapter(this, getData(), R.layout.item,
new String[] { "图片", "文字" },
new int[] { R.id.image, R.id.text });
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(this);//设置监听器
} private List<Map<String, Object>> getData() {
iconNames = new String[] { "联系人", "日历", "照相机", "时钟", "游戏", "短信", "铃声", "设置",
"语音", "天气", "浏览器", "YouTube" };
int[] drawable = { 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 };
for (int i = 0; i < iconNames.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("图片", drawable[i]);
map.put("文字", iconNames[i]);
list.add(map);
} return list;
} @Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) { Toast.makeText(this,iconNames[position], Toast.LENGTH_SHORT).show();
Log.i("Toast", iconNames[position]);
}
}

Android_gridVIew的更多相关文章

  1. Android开发10.3:UI组件GridView网格视图

    GridView(网格视图) 概述 GridView用于在界面上按行.列分布的方式来显示多个组件         GridView和ListView有共同的父类 : AbsListView       ...

随机推荐

  1. jquery选择器返回值

    jquery选择器$('selector')返回的不是数组,而是封装好的jquery对象.但这个对象有一个特别的地方,就是查询到的节点被以下标为属性,添加到了jquery对象上,所以它看起来像数组,因 ...

  2. init进程学习

    linux的init进程 一个在线编辑markdown文档的编辑器,是内核启动的第一个进程,init进程有很多重要的任务,它的pit 为1,在linux shell中使用pstree命令可以看到它为其 ...

  3. JDK1.5新特性(五)……Typesafe Enums

    援引 Typesafe Enums - This flexible object-oriented enumerated type facility allows you to create enum ...

  4. Storm因机器断电等,启动supervisor异常

    Storm因机器断电等,启动supervisor错误 因机器断电或其他异常导致的supervisor意外终止,再次启动时报错: 2014-08-13 10:36:03 b.s.event [ERROR ...

  5. JavaScript中值的真真假假(true and false)

    值为flase的有: false 0 "" //空串 null undefined NaN 除了以上的之外的都是ture,包括"0" (zero in quot ...

  6. sap 如何获取公司间采购订单或销售订单的交货状态

    在上SAP项目过程,上了SD模块的企业一般都要做一些跟公司间采购订单或销售订单的交货状态的报表,通过这些报表可以经客户的业务上提供很大的灵活性,至于如何的灵活,还是那句老话“谁用谁知道".1 ...

  7. struct stat 作用

    stat,lstat,fstat1 函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性.函数原型#include <sys/stat.h> int stat(cons ...

  8. mlock家族:锁定物理内存

    Start Page Index History Last Change mlock家族:锁定物理内存 系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间.这将阻止Linux 将 ...

  9. 详解Objective-C的meta-class

    比较简单的一篇英文,重点是讲解meta-class.翻译下,加深理解. 原文标题:What is a meta-class in Objective-C? 原文地址:http://www.cocoaw ...

  10. 射频识别技术漫谈(5)——防冲突【worldsing 笔记】

    正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作.但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突. 防冲突机制是非接触式智能 ...