属性名称

描述

android:columnWidth

设置列的宽度。

android:gravity

设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、 fill_vertical、center_horizontal、fill_horizontal、center、fill、 clip_vertical可以多选,用“|”分开。

android:horizontalSpacing

两列之间的间距。

android:numColumns

设置列数。

android:stretchMode

缩放模式。

android:verticalSpacing

两行之间的间距。

案例一:

1.定义一个布局文件:gridview.xml

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/gridview_main"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:numColumns="auto_fit"

android:verticalSpacing="1dp"

android:horizontalSpacing="1dp"

android:columnWidth="90dp"

android:stretchMode="columnWidth"

android:gravity="center"

>

android:numColumns="auto_fit"--列数设置为自动;

android:columnWidth="90dp"--每列的列宽,也就是item的宽度

android:verticalSpacing="1dp"--两行之间的边距

android:horizontalSpacing="1dp"--两列之间的边距

android:stretchMode="columnWidth"--缩放与列宽大小同步

2。接下来定义gridview_item.xml

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

>

android:id="@+id/gridview_imageview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

android:id="@+id/gridview_textview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TextView01"

android:gravity="center"

/>

3.最后定义Java的源代码了,GridViewDemo.java

package com.test;

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;

public class GridViewDemo extends Activity {

int [] image={R.drawable.android,R.drawable.blackberry,R.drawable.windowshone,R.drawable.windowshone,R.drawable.blackberry,R.drawable.android,R.drawable.windowshone,R.drawable.ios,R.drawable.blackberry};

private GridView gridView;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.gridview_main);

gridView = (GridView)findViewById(R.id.gridview_main);

//生成动态数组,并且转入数据

ArrayList> list=new ArrayList>();

for(int i=0;i<9;i++)

{

HashMap map = new HashMap();

map.put("ItemImage", image[i]);//添加图像资源的ID

map.put("itemtext","Amigos_pop-"+String.valueOf(i));

list.add(map);

}

//生成适配器的ImageItem <====> 动态数组的元素,两者一一对应

SimpleAdapter adapter=new SimpleAdapter(this, //数据来源

list,R.layout.gridview_item,//XML实现

new String[]{"ItemImage","itemtext"}, //动态数组与ImageItem对应的子项

new int[]{R.id.gridview_imageview,R.id.gridview_textview}// //ImageItem的XML文件里面的一个ImageView,两个TextView ID

);

//添加并且显示

gridView.setAdapter(adapter);

//添加消息处理

gridView.setOnItemClickListener(clickListener);

}

//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件

private OnItemClickListener clickListener=new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> arg0,//The AdapterView where the click happened

View arg1,//The view within the AdapterView that was clicked

int arg2,//The position of the view in the adapter

long arg3//The row id of the item that was clicked

)

{

HashMap item=(HashMap)arg0.getItemAtPosition(arg2);

setTitle((String)item.get("itemtext"));

}

};

}

4:执行效果:

===============================================================================

案例二:同样的效果:

布局文件使用上面一样的:

定义一个ImageAdapter类,此类继承BaseAdapter如下:

package com.test;

import android.content.Context;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

public class GridViewAdapter extends BaseAdapter {

//定义Context

private Context mContext;

//定义整形数组 (图片资源)

private int [] mimages=

{

R.drawable.android,R.drawable.blackberry,R.drawable.windowshone,

R.drawable.windowshone,R.drawable.blackberry,R.drawable.android,

R.drawable.windowshone,R.drawable.ios,R.drawable.blackberry

};

public GridViewAdapter(Context c)

{

mContext=c;

}

//获取图片的个数

@Override

public int getCount() {

// TODO Auto-generated method stub

return mimages.length;

}

// 获取图片在库中的位置

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return position;

}

//获取图片ID

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent)

{

ImageView mimageView;

if(convertView==null)

{

//给Imageview设置资源

mimageView = new ImageView(mContext);

//设置布局图片120*120显示

mimageView.setLayoutParams(new GridView.LayoutParams(85, 85));

mimageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

mimageView.setPadding(8, 8, 8, 8);

}else

{

mimageView=(ImageView) convertView;

}

mimageView.setImageResource(mimages[position]);

return mimageView;

}

}

package com.test;

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 GridViewDemo_2 extends Activity {

private GridView gridView;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.gridview_main);

gridView = (GridView)findViewById(R.id.gridview_main);

gridView.setAdapter(new GridViewAdapter(this));//调用GridViewAdapter

gridView.setOnItemClickListener(clickListener);

}

private OnItemClickListener clickListener =new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> arg0, View arg1, int position,

long id) {

Toast.makeText(GridViewDemo_2.this, ""+position,Toast.LENGTH_SHORT).show();//显示信息;

}

};

}

效果:

android gridview 详解,Android GridView九宫图相关推荐

  1. android 目录详解,Android源码目录结构详解

    Android 4.0 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等 ...

  2. android 单例模式详解,android开发设计模式之——单例模式详解

    单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到.比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenH ...

  3. android task详解,Android AsyncTask的使用详解

    当然,我们在进行耗时操作或者更新UI时,是可以使用匿名线程的,但是此种方式是存在缺陷的:第一,线程的开销较大,如果每个任务都要创建一个线程,那么应用 程序的效率要低很多:第二,线程无法管理,匿名线程创 ...

  4. Android StateFlow详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121913352 本文出自[赵彦军的博客] 文章目录 系列文章 一.冷流还是热流 S ...

  5. Android SharedFlow详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121911675 本文出自[赵彦军的博客] 文章目录 系列文章 什么是SharedF ...

  6. android打印intent flag,Android flag详解

    Android flag详解 Android flag详解 一.Flag标志位 在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 如: 二.addFla ...

  7. android rotate 动画,Android RotateAnimation详解

    RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度. 1.RotateAnimation(fromDegrees, toDegrees) [默 ...

  8. Android.mk详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52875825 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  9. android ui框架详解,多图详解 “Android UI”设计官方教程(二)

    编者注:本文为Android的官方开发者博客发了一份幻灯片的翻译文档的第二部分,专门介绍了一些Android UI设计的小贴士,我们在介绍这个幻灯片的第一部分<多图详解 "Androi ...

最新文章

  1. 论如何寻找万一的川财证券开户渠道
  2. Git之深入解析如何选择修订的版本
  3. 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现
  4. keras笔记-mnist数据集上的简单训练
  5. web:网站性能工具Yslow
  6. c/c++将字符串中的空格替换成%20
  7. Spark修炼之道(高级篇)——Spark源码阅读:第八节 Task执行
  8. MP算法和OMP算法及其思想
  9. ArcGIS导出地图后部分图例不显示
  10. exchange服务器磁盘性能,Exchange磁盘空间不够了怎么办?
  11. 十大开源Web应用安全测试工具
  12. Kubernetes Egress 网络策略指南
  13. 软件测试基础知识 - 单元测试、集成测试、系统测试、回归测试、验收测试这几步中最重要的是哪一步
  14. 定制化centos7
  15. Adobe illustrator2022(Ai2022)新增功能
  16. 学计算机要学好数学吗,学好数学对计算机专业重要吗?
  17. Linux:ip addr命令分析
  18. 一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
  19. Android中一个APP启动另一个APP并传递参数
  20. 在Linux系统搭建Hugo博客

热门文章

  1. 一文读懂SIMD指令集 目前最全SSE/AVX介绍
  2. matlab实现彩色图像的直方图均衡化
  3. STM32 UART DMA实现未知数据长度接收(转自amoBBs)
  4. Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案
  5. 剪辑视频怎么学?手把手教你自学视频剪辑
  6. App开发者必备的运营、原型、UI设计工具整理
  7. 2022-03-30 StackOverflowError与OutOfMemoryError详解
  8. 股票技术指标详解--移动平均线(MA)
  9. 软件测试之第三方快捷支付_支付宝遭遇最强对手:银联正面PK快捷支付
  10. 接口和抽象类的区别是什么?抽象类必须要有抽象方法吗?抽象类能使用 final 修饰吗?