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 ...
随机推荐
- 【Android实战】----从Retrofit源代码分析到Java网络编程以及HTTP权威指南想到的
一.简单介绍 接上一篇[Android实战]----基于Retrofit实现多图片/文件.图文上传中曾说非常想搞明确为什么Retrofit那么屌. 近期也看了一些其源代码分析的文章以及亲自查看了源代码 ...
- nginx 405 not allowed问题的解决
转载自: http://www.linuxidc.com/Linux/2012-07/66761.htm Apache.IIS.Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否 ...
- openwrt使用list
openwrt中用到双向无头链表,实际应用时应在外部定义实体链表头,后续可直接应用链表函数(宏定义已将链表头排除在外): static struct list_head timeouts = LIST ...
- 【大数据笔记】白话详解Zookeeper的一致性
下面内容主要摘抄于<<Hadoop实战>>,红色高亮部分是本人添加的白话注释. Zookeeper 是一种高性能.可扩展的服务. Zookeeper 的读写速度非常快,并且读的 ...
- Linux启动与禁止SSH用户及IP的登录
以下就针对SSH方面讨论一下.假设有人特别关注Linux环境的安全性,第一就从login方面来进行讨论 1:Linux启动或禁止SSH root用户的登录 2:Linux限制SSH用户 事实上这些东西 ...
- mvn 仓库地址修改
默认仓库的存储位置 Maven缺省的本地仓库路径为${user.home}/.m2/repository具体如下图 自定义修改仓库的存储位置: 可改变默认的 .m2 目录下的默认本地存储库文件夹通过修 ...
- R语言学习笔记之<在Linux上遇到的问题集锦>
Standalone模式:Standalone模式运行的Spark集群对不同的应用程序采用先进先出(FIFO)的顺序进行调度.默认情况下每个应用程序会独占所有可用节点的资源. 现在版本的SparkR只 ...
- 关于在Android中Activity页面跳转的方法
一.无返回结果的页面跳转 1.创建两个类FActivity.java和SActivity.java 2.创建两个layout目录下的factivity.xml和sactivity.xml 3.在And ...
- 深度可分离卷积结构(depthwise separable convolution)计算复杂度分析
https://zhuanlan.zhihu.com/p/28186857 这个例子说明了什么叫做空间可分离卷积,这种方法并不应用在深度学习中,只是用来帮你理解这种结构. 在神经网络中,我们通常会使用 ...
- Java获取yahoo天气预报
学习闲暇之余,写了个获取yahoo天气预报的java小程序,仅供娱乐. 首先我们需要获取您需要查询城市对应的代号,我们可以用HashMap来查询,代码如下: publicstatic HashMap& ...