第30讲 UI组件之 GridView组件

1.网格布局组件GridView

GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件。一般用于显示多张图片,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。

GridView常用的XML属性:

属性名称

描述

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

缩放模式,即如何填满空余位置。columnWidth是分配剩余空间给每一列;spacingWidth是分配剩余空间给间隔空隙

android:verticalSpacing

两行之间的间距。

使用方法与Listview类似:(部分代码)

其中的adapter采用BaseAdapter方式构建

private classMyAdapter extends BaseAdapter{

private int[] image;

private Context context;

public MyAdapter(int[] image, Context context) {

super();

this.image = image;

this.context = context;

}

public int getCount() { return image.length; }

public Object getItem(int arg0) { return null; }

public long getItemId(int arg0) { return 0; }

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

int resId=image[position];

ImageView imageView=new ImageView(context);

imageView.setImageResource(resId);

return imageView;

}

}

MainActivity.java部分代码:

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

int[] image=new int[] {

R.drawable.down,  R.drawable.up,  R.drawable.left,   R.drawable.down,  R.drawable.up,

R.drawable.left,    R.drawable.down, R.drawable.up,  R.drawable.left,  R.drawable.down,

R.drawable.up,  R.drawable.left,  R.drawable.right };

adapter=new MyAdapter(image,this);

gridView.setAdapter(adapter);

GridView属性

android:numColumns="3" //列数 可以设置为auto_fit,根据columnWidth和Spacing来自动计算。

android:columnWidth="30dp"

android:horizontalSpacing="10dp"

android:verticalSpacing="10dp"

android:stretchMode="columnWidth"

//如何填满空余位置,columnWidth是分配剩余空间给每一列;spacingWidth是分配剩余空间给间隔空隙

二、丰富GridView

实现如下形式的GridView,图片带名字

首先需要构建一个layout——book.xml,用来装载名字和图片。

然后更改adapter

public class MainActivity extends ActionBarActivity {

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

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

//图片数组

int[] image=newint[] {

R.drawable.beihang, R.drawable.beihang, R.drawable.beihang,

R.drawable.beihang, R.drawable.beihang, R.drawable.beihang,

R.drawable.beihang,R.drawable.beihang, R.drawable.beihang,

R.drawable.beihang, R.drawable.beihang, R.drawable.beihang};

//设置为图片名称

String[] bookname=new String[] {

"java1","java2", "java3", "java4", "java5","java6",

"java7","java8", "java9", "java10", "java11","java12" };

//为GridView设置适配器

gridView.setAdapter(new MyAdapter(image,this,bookname));

//注册监听事件

gridView. setOnItemClickListener(newOnItemClickListener() {

public void onItemClick(AdapterView<?> agr0, View agr1, int agr2, longagr3) {

        Toast.makeText(MainActivity.this,agr2+"-"+ agr3, Toast.LENGTH_SHORT).show();


}

});

}

 

//自定义适配器

public class MyAdapter extends BaseAdapter {

private int[] image;

private Context context;

private String[] bookname;

public MyAdapter(int[] image,Context context, String[] bookname) {

super();

this.image = image;

this.context = context;

this.bookname = bookname;

}

public int getCount() { return image.length;}

public Object getItem(int position){return null; }

public long getItemId(int position){
return
0; }

//创建View方法

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

int resId=image[position];

String name=bookname[position];

//设置ImageView对象布局

ViewGroup group=(ViewGroup) getLayoutInflater().inflate(R.layout.book,null);

ImageView imageView=(ImageView) group.findViewById(R.id.imageView1);

//为ImageView设置图片资源

imageView.setImageResource(resId);

TextView textView=(TextView) group.findViewById(R.id.textView1);

textView.setText(name);

return group;

}

}

第30讲 UI组件之 GridView组件的更多相关文章

  1. 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter

    第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...

  2. 第28讲 UI组件之 ListView和ArrayAdapter

    第28讲 UI组件之 ListView和ArrayAdapter 1. Adapter 适配器 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 ...

  3. 第34讲 UI组件之 ProgressDialog和Message

    第34讲UI组件之 ProgressDialog和Message 1.进度对话框 ProgressDialog <1>简介 ProgressDialog是AlertDialog类的一个扩展 ...

  4. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler

    第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...

  5. 第32讲 UI组件之 时间日期控件DatePicker和TimePicker

    第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置,    Time ...

  6. 第31讲 UI组件之 Gallery画廊控件

    第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...

  7. 第27讲 UI组件之 ScrollView与底部动态添加数据

    第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...

  8. 第25讲 UI组件之 AlertDialog 的各种实现

    第25讲 UI组件之AlertDialog 的各种实现 对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框. Android提供了多种对话框:警告对话框(A ...

  9. 第19讲- UI组件之_Button、checkbox、radio

    第19讲 UI组件之_Button.checkbox.radio 四.按钮Button Button继承自TextView,间接继承自View.当用户对按钮进行操作的时候,触发相应事件,如点击,触摸. ...

随机推荐

  1. [原创]安卓使用Termux做渗透测试(演示sqlmap安装,并附上一个神器)

    由于手机kali太大,并且MIUI8+Android6.0的我.用手机kali不是太方便(懒得捣鼓),所以另找道路,用手机作渗透测试. 1.下载一个Termux,并授予ROOT权限. 2.打开之后输入 ...

  2. Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1) 错误 解决方案(android-ndk)

    在android里做ndk编程的时候,碰到个随机性错误 错误信息如下: 05-06 15:59:44.411: A/libc(3347): Fatal signal 11 (SIGSEGV) at 0 ...

  3. USB 管道 && 端点

    管道是对主机和usb设备间通信流的抽象.      管道和usb设备中的端点一一对应,一个usb设备含有多少个端点,其和主机进行通信时就可以使用多少条管道,且端点的类型决定了管道中数据的传输类型.  ...

  4. WEB 开发所用的网站

    常用前端手册: http://caniuse.com/ http://www.w3school.com.cn/ http://www.runoob.com/ http://www.css88.com/ ...

  5. 从html字符串中获取div内容---jquery

    思考的问题: 怎么在一个网页的div中嵌套另外的网页(不使用inclue,iframe和frame,不使用他们的原因,include只能嵌套静态网页,iframe对网络爬虫影响,frame嵌套网页无法 ...

  6. Sql Server 2008清理数据库日志的语句

    USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECO ...

  7. oracle 优化——索引与组合索引

    1.索引结构.第一张图是索引的官方图解,右侧是存储方式的图解. 图中很清晰的展示了索引存储的状况. 在leaf 节点中存储了一列,索引所对应项的 :值,rowId,长度,头信息(控制信息) 这样我们就 ...

  8. plsql编程中游标的使用

    游标(Cursor):用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作. oracle中显示使用游标一般要包含以下5个步骤: 声明一些变量以便存储从游 ...

  9. 64位Windows 7平台安装32位Timesten,配置ODBC数据源

    问题: 由于系统版本原因,客户机只能安装32位的Timesten,但客户机的平台是64位的win 7,安装完成后按照常规的控制面板->管理工具->数据源(ODBC)打开的ODBC数据源管理 ...

  10. JQuery原理介绍及学习方法

    前言 对于JQuery,想必大家都很熟悉.目前,很多web项目,在实施的过程中,考虑到各浏览器原生JS API的兼容性,大都会选用JQuery或类似于JQuery这样的框架来进行网页效果开发.JQue ...