安卓 九宫格 GridView 的表格布局
首先,请大家理解一下“迭代显示”这个概念,这个好比布局嵌套,我们在一个大布局里面重复的放入一些布局相同的小布局,那些重复的部分是由图片和文字组成的小控件,图片在上方,文字在下方,之后我们只需要把这些小控件迭代进入主容器里即可。
我们来看看主容器的布局(GridView)
main.xml
<?xml version="1.0" encoding="utf-8"?>  
<GridView xmlns:android="http://schemas.android.com/apk/res/android"  
      android:id="@+id/GridView"  
      android:layout_width="fill_parent"  
      android:layout_height="fill_parent"  
      android:numColumns="auto_fit"  
      android:columnWidth="90dp"  
      android:stretchMode="columnWidth"  
      android:gravity="center">  
</GridView>
1
2
3
4
5
6
7
8
9
10
介绍一下里面的某些属性:
android:numColumns=”auto_fit” ,GridView的列数设置为自动
android:columnWidth=”90dp”,每列的宽度,也就是Item的宽度
android:stretchMode=”columnWidth”,缩放与列宽大小同步
在这里需要关注的属性是columnWidth,这里指定了列的宽度,一个列对象,对应一个 “可重复的子项”,这个子项就是我们 的图片项和图片下方文字显示的部分。如果不指定这个宽度的话,默认是每行(展示的行,界面)仅仅只显示一个 “可重复的子项”,而当指定了宽度时,本文指定为90dp,如果每行实际行尺寸大于90,他就会继续将下一个的“可重复的子项”,放置在本行。于是就呈现一种 一行显示多个子项的情况。numColumns属性,指定一个自动填充的值,指示了自动填充行。
接下来我们需要再创建一个XML布局文件,这里我们写需要“被迭代”的子项(RelativeLayout)
item.xml
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
>  
<ImageView  
    android:layout_width="wrap_content"  
    android:id="@+id/ItemImage"  
    android:layout_height="wrap_content"  
    android:layout_centerHorizontal="true"/>  
<TextView  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:layout_below="@+id/ItemImage"  
    android:id="@+id/ItemText"  
    android:layout_centerHorizontal="true"  
/>  
</RelativeLayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
这里使用了一个相对布局,在TextView 里使用属性android:layout_below=”@+id/ItemImage”指示了文本在图片的下方。
最后一步,我们需要把这些东西拼在一起,并且实现这里我们采用了java中的数据结构:HashMap,用法这里不多说了,可以自行百度。
然后构建ArrayList作为数据源,再构建SimpleAdapter 作为数据适配器,为gridView指定适配器对象。
以下是java代码:
package jiabin.activity;
import java.util.ArrayList;  
import java.util.HashMap;
import android.app.Activity;  
import android.os.Bundle;  
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 layout_gridview extends Activity {  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        GridView gridview = (GridView) findViewById(R.id.GridView);  
        ArrayList<HashMap<String, Object>> meumList = new ArrayList<HashMap<String, Object>>();  
        for(int i = 1;i < 10;i++)  
        {  
            HashMap<String, Object> map = new HashMap<String, Object>();  
            map.put("ItemImage", R.drawable.i1);  
            map.put("ItemText", ""+i);  
            meumList.add(map);  
        }  
        SimpleAdapter saItem = new SimpleAdapter(this,  
                  meumList, //数据源  
                  R.layout.item, //xml实现  
                  new String[]{"ItemImage","ItemText"}, //对应map的Key  
                  new int[]{R.id.ItemImage,R.id.ItemText});  //对应R的Id
//添加Item到网格中  
                gridview.setAdapter(saItem);  
                //添加点击事件  
                gridview.setOnItemClickListener(  
                    new OnItemClickListener(http://www.my516.com)  
                    {  
                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)  
                        {  
                            int index=arg2+1;//id是从0开始的,所以需要+1  
                            Toast.makeText(getApplicationContext(), "你按下了选项:"+index, 0).show();  
                            //Toast用于向用户显示一些帮助/提示  
                        }  
                    }  
                );  
    }  
}
安卓 九宫格 GridView 的表格布局的更多相关文章
- a元素的两个重要功能和表格布局
		⦁ 发送邮件:<a href="mailto:231455557@qq.com">联系我们</a> ⦁ 锚点两个重要应用:查看目录 提供菜单功能回到顶 ... 
- 安卓app开发-05-Android xml布局详细介绍
		安卓app开发-05-Android xml布局详细介绍 虽然说有 墨刀,墨客 这些图形化开发工具来做 Android 的界面设计,但是我们还是离不开要去学习做安卓原生app,学习 xml 布局还是必 ... 
- android——相对布局,表格布局
		1.相对布局 RelativeLayout 又称作相对布局,也是一种非常常用的布局.和LinearLayout 的排列规则不同,RelativeLayout 显得更加随意一些,它可以通过相对定位的方式 ... 
- Android之UI编程(二):表格布局
		表格布局(TableLayout)继承了LinearLayout,它的本质依然是线性布局管理器,表TableLayout采用行.列的形式来管理UI组件,它并不需要明确地声明暴行多少行.多少列,而是通过 ... 
- 黑马程序员——HTML表格布局
		---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ... 
- Android课程---表格布局TableLayout
		特别注意:由于表格布局继承自线性布局,因此并不显示表格线 示例代码: <?xml version="1.0" encoding="utf-8"?> ... 
- Android布局-TableLayout表格布局
		一.表格布局-TableLayout 1.概念 表格布局采用行列的形式来管理UI的控件.表格布局适合于有规则的布局. TableRow,用来管理行,TableRow中的一个空间占据该行的一列.若不用T ... 
- 案例:TableLayout表格布局——迷你计算器
		计算器可以常用线性布局(LinearLayout)和表格布局(tableLayout).Gridlayout 今天我用的是表格布局 效果如下: 代码如下: <TableLayout xmlns: ... 
- TableLayout(表格布局)
		表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象.TableRow可以添加子控件,每添加一个为一列. TableLayout属性: android ... 
随机推荐
- float在内存中的存放
			一个float型实数在内存中占4个字节,即32个二进制bit,从低位到高位依次叫第0位到第31位.这32位可以分为3个部分:符号位(第31位),阶码(第30位到第23位共8位),尾数(最低23位). ... 
- cocos2d-html5开发之本地数据存储
			做游戏时常常须要的一个功能呢就是数据的保存了,比方游戏最高分.得到的金币数.物品的数量等等.cocos2d-html5使用了html5.所以html5的数据保存方法是对引擎可用的: html5本地数据 ... 
- CodeForces - 735D Taxes (哥德巴赫猜想)
			Taxes time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ... 
- 【CTSC 2007】 数据备份
			[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1150 [算法] 首先,有一个很显然的结论 : 如果要使距离和最小,必须选择相邻的办公 ... 
- Hamming Distance(随机算法)
			http://acm.hdu.edu.cn/showproblem.php?pid=4712 题意:计算任意两个十六进制的数异或后1的最少个数. 思路:用随机数随机产生两个数作为下标,记录这两个数异或 ... 
- 3个不常用的HTML标签
			html标签众多,在HTML手册里你可以都查到.但有的HTML标签你可能从未使用过.不是因为你欠缺学习精神,而是它们确实用处不大.如果你有探索精神,那就接着往下看吧. 第一个:<abbr> ... 
- 洛谷P2916 [USACO08NOV]为母牛欢呼(最小生成树)
			P2916 [USACO08NOV]为母牛欢呼Cheering up the C… 题目描述 Farmer John has grown so lazy that he no longer wants ... 
- C指针基础知识
			指针的声明 C语言声明格式:"类型 变量名;" 基本类型:int hoge; 指针类型:int *pointer; 区别在于: 声明 含义 int hoge; 声明整数类型的变量 ... 
- Rancher 2:添加 NFS client provisioner 动态提供 Kubernetes 后端存储卷
			一.前提说明 1.说明: NFS client provisioner 利用 NFS Server 给 Kubernetes 作为持久存储的后端,并且动态提供PV. 默认 rancher 2 的存储类 ... 
- 常用的 Maven 命令
			maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下. -D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试: -P 指定 ... 
