Android 使用GridView以表格的形式显示多张图片
GridView用于在界面上按行、列分布的方式来显示多个组件(而ListView只是以按行的方式)
课程目标
学会使用GridView制作二维布局界面(行、列分布)
数据源(集合) --> 适配器(SimpleAdapter) --> 视图界面(GridView)
实现一种用GridView实现手机桌面的效果。
需要新建一个Item样式文件item.xml,是一个LinearLayout,包含一张图片和一段文字。
然后配置simpleAdapter,GridView设置SimpleAdapter。
GridView比较重要的三个属性:
android:numColumns 每一行显示多少列
android:horizontalSpacing 两列之间的间距
android:verticalSpacing 两行之间的间距
android:numColumns="auto_fit" 设置每一行的列数自适应
需要在AndroidManifest.xml中设置application的Theme
android:theme="@android:style/Theme.Black.NoTitleBar" >
然后就设置完了布局,接下来实现事件监听器。
onItemClick()函数的position参数会记录Item在GridView中的位置(Id)。
实现了一个仿桌面的GridView,点击的时候会显示名字。
package com.example.gridview; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
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; public class MainActivity extends FragmentActivity implements OnItemClickListener { private GridView gridView;
private List<Map<String, Object>> dataList;
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 = { "通讯录", "日历", "照相机", "时钟", "游戏", "短信",
"铃声", "设置", "语音", "天气", "浏览器", "视频" };
private SimpleAdapter simpleAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); gridView = (GridView) findViewById(R.id.gridView1);
dataList = new ArrayList<Map<String, Object>>();
getData();
simpleAdapter = new SimpleAdapter(this, dataList, R.layout.item, new String[] { "image", "text" }, new int[] { R.id.imageView1, R.id.textView1 });
gridView.setAdapter(simpleAdapter);
gridView.setOnItemClickListener(this);
} private void getData() {
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]);
dataList.add(map);
}
} @Override
public void onItemClick(AdapterView<?> parent, View arg1, int position, long id) {
Toast.makeText(this, "我是" + iconName[position], Toast.LENGTH_SHORT).show();
}
}
MainActivity.java
<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"
> <GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
>
</GridView> </LinearLayout>
activity_main.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/imageView1"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_launcher" /> <TextView
android:layout_marginTop="5dp"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:text="文字"
/> </LinearLayout>
item.xml
效果:

Android 使用GridView以表格的形式显示多张图片的更多相关文章
- 将从数据库中获取的数据 ,以HTML表格的形式显示
1.HTML页面 <body> <form id="form1" runat="server"> <div id="di ...
- 通过JSTL用表格的形式显示
<%@ page language="java" import="java.util.*, cn.hncu.domain.*" pageEncoding= ...
- 采用jsp用表格的形式显示
<%@page import="cn.hncu.domain.*"%><%@ page language="java" import=&quo ...
- 控制台程序读取WIKI形式的TXT文件并一表格的形式显示在Word中
'Imports System.Collections.Generic 'Imports System.Text 'Imports System.IO 'Imports office = Micros ...
- Android入门之GridView(表格控件)
GridView是一个表格控件,可以在每个单元格中显示自定义的View或者字符串.在这里我们要实现一个图标下方有文字的效果. 1.首先我们应自定义布局文件image_text.xml.代码如下: &l ...
- 利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据
登录界面 <body><form action="login1.php" method="post"><div>用户名:&l ...
- Android Studio gridview 控件使用自定义Adapter, 九宫格items自适应全屏显示
先看效果图,类似于支付宝首页的效果.由于九宫格显示的帖子网上已经很多,但是像这样九宫格全屏显示的例子还不是太多.本实例的需求是九宫格全屏显示,每个子view的高度是根据全屏高度三等分之后自适应高度,每 ...
- 从头学起android<GridView网格视图.二十八.>
GridView基于组件的网络格所有的形式的组分的,例如:当制作专辑,所有的图片将在相同的尺寸在不同的显示格在孩子,是否能够依靠这个组件完成.此组件的继承结构参见例如下面: java.lang.Obj ...
- Android笔记(十) Android中的布局——表格布局
TableLayout运行我们使用表格的方式来排列控件,它的本质依然是线性布局.表格布局采用行.列的形式来管理控件,TableLayout并不需要明确的声明包含多少行多少列,而是通过添加TableRo ...
随机推荐
- 利用IT++搭建通信仿真平台
IT++ is a C++ library of mathematical, signal processing and communication classes and functions.也就是 ...
- 友盟分享和cocos2dx符合重复duplicate symbol 解决方案
最近使用友盟分享的sdk,没想到libWechatSDK.a居然和cocos2dx的符合冲突,提示base64.o重复了. 于是到网上找了一下解决方案,基本上去除微信的base64.o即可了. 用ar ...
- java web hello world(一)
首先在eclipse 里面创建一个java 动态项目, 记住路径,这里是直接通过根目录直接访问的webContent目录下面 的文件, 创建好后 ,在本地配置Tomcat服务器, 将server加入到 ...
- Oracle 外键约束子表、父表
CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, ...
- error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)”中被引用
一,问题描述 MSVCRTD.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invo ...
- swconfig--交换接口配置命令
swconfig是交换接口(switch)配置命令. swconfig list ; 列出可用的SWITCH设备信息(dev参数) Found: switch0 - ag71xx-mdio. swco ...
- javascript总述
一.JavaScript核心 一个完整的JavaScript应该由下列三个不同的部分组成. 1.核心(ECMAScript) 2.文档对象模型(DOM,Document Object Model) 3 ...
- redis调优
1.先把持久化数据备份一份,然后使用rdb分析工具分析一下大的键值2.然后DBA删除一部分不用的3.然后再配置最大内存 千万不要没清理数据就直接把内存限制较小 那样会触发redis对内存达到限制的处理 ...
- WPF教程二:布局之StackPanel面板
应用程序界面设计中,合理的元素布局至关重要,它可以方便用户使用,并将信息清晰合理地展现给用户.WPF提供了一套功能强大的工具-面板(Panel),来控制用户界面的布局.你可以使用这些面板控件来排布元素 ...
- 基于Struts2.3.x+Spring3.2.x+Hibernate4.2.x+EasyUI1.3.4+Maven架构的示例程序
基于Struts2.3.x+Spring3.2.x+Hibernate4.2.x+EasyUI1.3.4+Maven架构的示例程序 不知道为什么,保存的时候显示有一个连接为违禁内容,可能是…………. ...