1.GridView简介
GridView是ViewGroup子类,主要用于显示在一个二维可滚动的网格,比如九宫格。使用gridview和listview类似,都是使用ListAdapter来填充数据加载布局。
2.XML Attributes
(1).android:columnWidth
主要用来指定每一列的宽度,使用该属性时应该注意和后面的拉伸模式相关联。如果拉伸模式为spacingWidth,则该属性必须指定;如果拉伸模式为columnWidth指定该属性无效。
(2).android:gravity
用于指定每个item的对其方式起始位置,当有多个是可以使用'|'隔开
(3).android:horizontalSpacing
用于指定每一列的之间的间距。注意:如果拉伸模式为spacingWidth,则该值设定无效
(4).android:numColumns
每一列的item数目
(5).android:verticalSpacing
用于指定每一行的之间的间距。
(6).android:stretchMode(***)
如果以列间距拉伸,则不需要指定列之间的间距;如果以列的等宽度拉伸,则不需要指定列的宽度。
常量 值 描述
none
0
拉伸被禁用,不可以被拉伸
spacingWidth
1
每一列之间的间距会被拉伸,因此使用该拉伸模式时,必须指定columnWidth,而指定horizontalSpacing就会无效,即不需要先考虑horizontalSpacing
columnWidth
2
每一列是等宽度,只需要指定numColumns和horizontalSpacing,即先指定columnWidth就是无效的
spacingWidthUniform
3
每一列的间距均匀拉伸。拉伸被禁用,不可以被拉伸
3.GridView水平滚动
private GridView gridView;
private float density;
private int listSize = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new MyAdapter());
// 得到像素密度
DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
density = outMetrics.density; // 像素密度
// 根据item的数目,动态设定gridview的宽度,现假定每个item的宽度和高度均为100dp,列间距为5dp
ViewGroup.LayoutParams params = gridView.getLayoutParams();
int itemWidth = (int) (100 * density);
int spacingWidth = (int) (5*density);
params.width = itemWidth*listSize+(listSize-1)*spacingWidth;
gridView.setStretchMode(GridView.NO_STRETCH); // 设置为禁止拉伸模式
gridView.setNumColumns(listSize);
gridView.setHorizontalSpacing(spacingWidth);
gridView.setColumnWidth(itemWidth);
gridView.setLayoutParams(params);
/*
* 使用这种方式也有很大的弊端,由于动态指定了gridview的宽度,导致了gridview的所有item,getView()都会被调用,
* 如果item很大时,就不能使用这种方式了~~~
*/
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
System.out.println(position);
}
});
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<GridView
android:id="@+id/gridView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</GridView>
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
<?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:background="@android:color/holo_green_light"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/main_item_ad" />
</LinearLayout>
GridView是ViewGroup子类,主要用于显示在一个二维可滚动的网格,比如九宫格。使用gridview和listview类似,都是使用ListAdapter来填充数据加载布局。
2.XML Attributes
(1).android:columnWidth
主要用来指定每一列的宽度,使用该属性时应该注意和后面的拉伸模式相关联。如果拉伸模式为spacingWidth,则该属性必须指定;如果拉伸模式为columnWidth指定该属性无效。
(2).android:gravity
用于指定每个item的对其方式起始位置,当有多个是可以使用'|'隔开
(3).android:horizontalSpacing
用于指定每一列的之间的间距。注意:如果拉伸模式为spacingWidth,则该值设定无效
(4).android:numColumns
每一列的item数目
(5).android:verticalSpacing
用于指定每一行的之间的间距。
(6).android:stretchMode(***)
如果以列间距拉伸,则不需要指定列之间的间距;如果以列的等宽度拉伸,则不需要指定列的宽度。
常量 值 描述
none
0
拉伸被禁用,不可以被拉伸
spacingWidth
1
每一列之间的间距会被拉伸,因此使用该拉伸模式时,必须指定columnWidth,而指定horizontalSpacing就会无效,即不需要先考虑horizontalSpacing
columnWidth
2
每一列是等宽度,只需要指定numColumns和horizontalSpacing,即先指定columnWidth就是无效的
spacingWidthUniform
3
每一列的间距均匀拉伸。拉伸被禁用,不可以被拉伸
3.GridView水平滚动
private GridView gridView;
private float density;
private int listSize = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new MyAdapter());
// 得到像素密度
DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
density = outMetrics.density; // 像素密度
// 根据item的数目,动态设定gridview的宽度,现假定每个item的宽度和高度均为100dp,列间距为5dp
ViewGroup.LayoutParams params = gridView.getLayoutParams();
int itemWidth = (int) (100 * density);
int spacingWidth = (int) (5*density);
params.width = itemWidth*listSize+(listSize-1)*spacingWidth;
gridView.setStretchMode(GridView.NO_STRETCH); // 设置为禁止拉伸模式
gridView.setNumColumns(listSize);
gridView.setHorizontalSpacing(spacingWidth);
gridView.setColumnWidth(itemWidth);
gridView.setLayoutParams(params);
/*
* 使用这种方式也有很大的弊端,由于动态指定了gridview的宽度,导致了gridview的所有item,getView()都会被调用,
* 如果item很大时,就不能使用这种方式了~~~
*/
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
System.out.println(position);
}
});
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<GridView
android:id="@+id/gridView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</GridView>
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
<?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:background="@android:color/holo_green_light"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/main_item_ad" />
</LinearLayout>
发表评论
-
ScrollView嵌套Edittext
2015-04-08 18:26 848scrollview 中加入多个控件如 edittext 后会 ... -
android 布局式跑马灯,非TextView
2015-04-07 10:51 502如题,简单的实现了跑马灯效果,把Scroll.java放入an ... -
Android圆角图片
2015-03-11 17:44 703my_wane_shape.xml 快速圆角背景边框实现, ... -
SQLite多线程读写实践及常见问题总结
2015-02-13 17:06 952基本操作的部分,大家都很熟悉了,这里根据个人切身经验,总结了一 ... -
android加速度感应
2015-01-19 10:25 14781.android测量数据 (1)android设备坐标系 ... -
MatrixCursor的使用
2015-01-19 09:49 1047ContentProvider对外共享数据的时候的query( ... -
Android 获取控件的宽高高级用法(MeasureSpec)
2015-01-15 14:23 1005一个MeasureSpec封装了父 ... -
Android MMS,SMS之常用Uri
2014-09-19 16:32 1325Android MMS,SMS之常用Uri Android ... -
android短彩信查询以及MMS表结构
2014-09-19 16:31 2251android短信的数据库的Uri是不公开的, 读取起来时灰常 ... -
使用Android自带DownloadManager下载文件
2014-08-19 11:04 770SDK在API Level 9中加入了DownloadMan ... -
android textview里链接点击事件,增加图片
2014-08-07 16:45 1148Android系统默认给TextView插入图片提供了三种方 ... -
android Home事件汇总
2014-07-18 11:30 1010方法一:android 4.0以后无法通过更改页面的类型来 ... -
Android风格与主题(style and theme)
2014-07-16 16:35 675Android xml风格和主题文 ... -
Android中播放声音的两种方法
2014-05-30 15:09 670在Android中,音频、视 ... -
android 杀进程方法
2014-05-26 17:43 1013关闭应用的方法: 1.System.exit(0); ... -
android service 生命周期
2014-04-21 16:16 789有了 Service 类我们如何启动他呢,有两种方法: ... -
解决ADB端口被占用的问题
2014-04-21 16:14 835究其源就是adb server没启动 经过分析整理如下: ... -
输入法隐藏打开
2013-12-23 14:24 820首次进入activity,如果有个edittex ... -
google经纬度互转
2013-07-11 16:34 938https://developers.google.com/ ... -
android 安装删除软件
2013-07-08 17:19 11501、 Android.mk文件 LOCAL_PA ...
相关推荐
`ViewPager` 和 `GridView` 结合使用,可以实现首页导航栏布局的分页效果,这种设计模式常见于许多应用的启动页面,如新闻应用、电商应用等,提供多类别内容的滑动浏览体验。以下将详细介绍如何通过 `ViewPager` 和 ...
1. GridView概述:GridView继承自AbsListView,它将数据项按行和列的方式排列,允许用户滚动浏览和选择项目。通过适配器(Adapter)来填充数据,通常与ArrayList或Cursor一起使用。 2. 布局文件配置:在XML布局文件...
1. GridView概述: GridView继承自AbsListView,它会将数据集中的每个条目渲染为一个单元格,按照指定的列数进行排列。默认情况下,GridView是竖向滚动的,但可以通过设置横向滚动。 2. 实现拖放功能: 要实现...
一、ListView与GridView概述 1. ListView:ListView是一个可以滚动的视图,它允许用户在一个垂直列表中查看项目。每个列表项都可以由不同的视图表示,可以通过Adapter来填充数据。ListView支持多种视图类型,例如头...
2. **GridView概述**: - GridView是一种网格布局的列表控件,可以水平或垂直排列多个子视图,常用于展示图片或图标。 - 同样,GridView也需要一个Adapter来填充数据,其布局由列数决定,每个单元格可以自定义样式...
5. **水平滑动**:虽然GridView默认是垂直滚动,但通过自定义布局管理器,可以实现水平方向的滑动效果。 6. **动画效果**:利用Animation API,可以在数据添加、删除或更新时添加各种动态效果,增强用户体验。 7. ...
- 支持水平滑动切换标签。 - **应用场景**: - 电商应用的商品分类。 - 新闻类应用的频道选择。 - **设计要点**: - 标签页的文字简短明了。 - 滑动操作流畅,无卡顿感。 #### 七、SegmentedRadioButton **...
这个"Android应用源码之Android Launcher 桌面分页滑动代码"压缩包,显然是为了帮助开发者深入理解Android Launcher的实现原理,特别是关于桌面分页滑动的部分。下面将详细解析这个主题。 一、Android Launcher概述...
- **GridView概述**:GridView是类似ListView的控件,但它在水平方向上分多个列,可以展示二维网格的列表项。 - **布局配置**:与ListView相似,GridView也需要一个Item模板,但每个Item会占据网格中的一个单元格...
### Android控件大全及各布局控件的使用详解 #### 一、Android控件概述 Android控件是指在Android应用程序中用于实现用户界面的各种组件。这些控件包括但不限于按钮、文本框、列表视图等。熟悉并掌握这些控件对于...
二、GridView概述 GridView是Android中的一个控件,它允许以网格形式展示数据。每个单元格可以是一个自定义的视图,通常用于展示列表数据,比如图片、文字等。通过适配器(Adapter)将数据绑定到GridView上,实现...
在Android开发中,实现相册功能是一项常见的任务,它涉及到图片的选择、预览以及上传等操作。本篇文章将深入探讨如何在Android应用中构建一个基本的相册功能,结合源码分析和工具的使用。 首先,我们需要理解...
1. GridView概述:GridView继承自AbsListView,是Android系统提供的一个可以显示多行多列数据的控件。它可以自动调整每个单元格的大小,以适应不同的屏幕尺寸和设备方向。 2. Adapter原理:GridView的工作机制依赖...
一、Android系统概述 Android是由Google主导的开源操作系统,基于Linux内核。它的开放性使得开发者可以自由地定制用户界面,开发各种各样的应用程序。Android系统主要由应用程序层、应用程序框架层、系统库和服务层...
- **SkeletonApp的源文件结构及编译结构**:分析更复杂的程序结构,加深对Android应用程序构建的理解。 ##### 第5章:Android应用程序的内容 - **Android应用程序的概念性描述**:深入探讨了Android应用程序的设计...
1. GridView概述:GridView继承自ViewGroup,是Android中一种特殊的视图容器,它可以将子视图以行列的形式排列,用户可以通过横向滑动查看更多的内容。 2. 布局文件配置:在XML布局文件中,通过`<GridView>`标签来...
15. **ViewPager**: 用于实现水平翻页效果的容器。 16. **AdapterView**: 提供了适配器模式,用于将数据绑定到UI组件。 17. **RecyclerView**: 一种更高效、灵活的列表视图,支持多种布局方式。 ### 使用技巧与注意...
#### Xamarin.Android 概述 Xamarin.Android 是一个基于 .NET 的框架,允许开发者使用 C# 语言和 .NET Framework 构建高性能、原生的 Android 应用。它为开发者提供了丰富的 API 和工具集,能够与 Android 平台无缝...
2. 滑动效果:SlidingMenu利用了Android的Scroller类来实现平滑的动画效果。Scroller提供了一种方式来计算和控制动画的缓动效果,使得菜单的滑出和滑入过程更加自然。 3. 兼容性:SlidingMenu为了确保在低版本的...