文档章节

Android-GridView控件网格视图

Mr_K
 Mr_K
发布于 2015/12/17 00:35
字数 567
阅读 137
收藏 5

在使用网格视图(GridView)时,首先需要在屏幕上添加GridView组件,通常使用<GridView>标记在XML布局文件中添加,其基本语法:       

<GridView 
    属性列表
>
</GridView>

GridView组件所支持的属性如下:

属性 描述
columnWidth 设置列的宽度
gravity 设置对齐方式
horizintalSpaing 设置各元素之间的水平间距
numColumns 设置列数,大于1的常数
stretchMode 拉伸模式‍
verticalSpacing 设置各元素之间的垂直间距

 

GridVew和ListVew类似,需要通过Adapter来提供需要显示的数据。

如图:我们需要使用Grid实现如下的效果(即一个图片和一个标题):

 

首先,添加主页面的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" >
    <GridView
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="4"
        android:stretchMode="columnWidth" >
    </GridView>
</LinearLayout>

其次,每个表格的布局,即一个图片和一个文本

<?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" >

    <ImageView
        android:id="@+id/imgView"
        android:layout_width="wrap_content"
        android:layout_height="70px"
        android:paddingLeft="10px"
        android:scaleType="fitCenter" />

    <TextView
        android:id="@+id/imgTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="5px" />

</LinearLayout>

每项的信息实体:

public class MyGridViewItemInfo {

	private int imgId;
	private String title;
	public int getImgId() {
		return imgId;
	}
	public void setImgId(int imgId) {
		this.imgId = imgId;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
}

自定义Adapter:

public class MyGridViewAdapter extends BaseAdapter{
	
	private final List<MyGridViewItemInfo> infos = new ArrayList<MyGridViewItemInfo>();
	private Context context;
	
	public MyGridViewAdapter(Context context,List<MyGridViewItemInfo> infos){
		this.infos.clear();
		this.infos.addAll(infos);
		this.context = context;
	}

	@Override
	public int getCount() {
		return this.infos.size();
	}

	@Override
	public Object getItem(int arg0) {
		return this.infos.get(arg0);
	}

	@Override
	public long getItemId(int arg0) {
		return arg0;
	}

	@Override
	public View getView(int arg0, View view, ViewGroup arg2) {
		if(view == null){
			View view2 = LayoutInflater.from(this.context).inflate(R.layout.grid_view_item, null);
			MyGridViewItemInfo info = (MyGridViewItemInfo)this.getItem(arg0);
			ImageView imageView = (ImageView)view2.findViewById(R.id.imgView);
			imageView.setImageResource(info.getImgId());
			TextView textView = (TextView)view2.findViewById(R.id.imgTitle);
			textView.setText(info.getTitle());
			return view2;
		}
		return view;
	}

}

 

最后:

public class MyGridViewAvtivity extends Activity {

	private final int[] imageleds = new int[] { R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04,
			R.drawable.img05, R.drawable.img06, R.drawable.img07, R.drawable.img08, R.drawable.img09, R.drawable.img10,
			R.drawable.img11, R.drawable.img12, R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04,
			R.drawable.img05, R.drawable.img06, R.drawable.img07, R.drawable.img08, R.drawable.img09, R.drawable.img10,
			R.drawable.img11, R.drawable.img12 };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.grid_view);

		final GridView gridView = (GridView) findViewById(R.id.gridView);
		List<MyGridViewItemInfo> infos = new ArrayList<MyGridViewItemInfo>();
		for (int i = 0; i < imageleds.length; i++) {
			MyGridViewItemInfo info = new MyGridViewItemInfo();
			info.setImgId(imageleds[i]);
			info.setTitle("这是标题" + i);
			infos.add(info);
		}
		MyGridViewAdapter adapter = new MyGridViewAdapter(this, infos);
		gridView.setAdapter(adapter);
	}

}

 

 

 

 

 

 

 

 

© 著作权归作者所有

Mr_K

Mr_K

粉丝 34
博文 15
码字总数 7517
作品 0
成都
高级程序员
私信 提问
Android学习-网格视图GridView

一、简介: GridView是一个以表格形式显示多张图片等组件。它是按照行列的方式来显示内容的,比如实现九宫格图,用GridView是首选。 二、代码块: 看过我上一篇博客的同学应该知道,一步一步...

YouChaoMin
2018/11/28
0
0
Android 滑动效果基础篇(四)—— Gallery + GridView

Android系统自带一个GridView和Gallery两个控件,GridView网格显示,Gallery单个浏览,两者结合起来可以真正实现Gallery浏览图片效果。 本示例通过GridView和Gallery两个控件,模仿实现一个完...

长平狐
2013/01/06
264
0
C#-Xamarin的Android项目开发(二)——控件应用

相信我,这不是一篇吐槽文章。。。。 基础控件 Android的控件和控件样式非常特别,它是一种内联特别高的设计模式,换句话说,它是非常烂的设计。。。。 但在这种特别的关系里还是有一定的规律...

kiba518
02/20
0
0
【android基础学习之六】——常用效果1

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误...

晨曦之光
2012/03/08
1K
0
【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的...

达叔小生
2018/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0.01-Win10安装linux子系统

一、安装Debian子系统 -1、控制面板设置: -1.1、打开“控制面板” —— “程序” —— “启用或关闭Windows功能” —— 勾选 “适用于Linux的Windows子系统” -2、设置: -2.1、打开“设置”...

静以修身2025
昨天
2
0
init 0-6 (启动级别:init 0,1,2,3,4,5,6)

启动级别: init 0,1,2,3,4,5,6 这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下。。 0: 停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system...

圣洁之子
昨天
2
0
Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转...

天王盖地虎626
昨天
2
0
聊聊Elasticsearch的ProcessProbe

序 本文主要研究一下Elasticsearch的ProcessProbe ProcessProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/process/ProcessProbe.java public class ProcessProb......

go4it
昨天
3
0
mysql PL(procedure language)流程控制语句

在MySQL中,常见的过程式SQL语句可以用在存储体中。其中包括IF语句、CASE语句、LOOP语句、WHILE语句、ITERATE语句和LEAVE语句,它们可以进行流程控制。 IF语句相当于Java中的if()...else if(...

edison_kwok
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部