GridLayout和GridView飓风和台风的区别别

GridView和GridLayout有什么区别
gridview的每个子view布局使用的都是一样的。gridlayout则是一个布局方式。表格里面的子布局想放什么则可以根据自己需要去写
Android项目开发实战-4...37112人阅读
布局 代码布局(32)
作为android 4.0 后新增的一个布局,与前面介绍过的TableLayout(表格布局)其实有点大同小异;
不过新增了一些东东
①跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式
②容器中的组件可以跨多行也可以跨多列(相比TableLayout直接放组件,占一行相比较)
因为是android 4.0新增的,API Level 14,在这个版本以前的sdk
都需要导入项目,等下会详细介绍
①设置组件的排列方式: &android:orientation=&& & & vertical(竖直,默认)或者horizontal(水平)
②设置组件的对齐方式: &android:layout_gravity=&&& center,left,right,buttom啊,这些,如果想同时用两种的话:eg: buttom|left
设置布局为几行几列:
①设置有多少行:android:rowCount=&4&& & & &//设置网格布局有4行
②设置有多少列:android:columnCount=&4& & &//设置网格布局有4列
设置某个组件位于几行几列
注:都是从0开始算的哦!
①组件在第几行:android:layout_row = &1& & //设置组件位于第二行
②组件在第几列:android:layout_column = &2& & //设置该组件位于第三列
设置某个组件横跨几行几列:
①横跨几行:android:layout_rowSpan = &2&& & //纵向横跨2行
②横跨几列:android:layout_columnSpan = &3& & & //横向横跨2列
最最最普遍的例子----计算器界面:
PS:这里要说一点,网格布局和其他布局不同,可以不为组件设置Layout_width和Layout_height属性
因为组件的宽高由几行几列决定了,当然,你也可以写个wrap_content
&GridLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:id=&@+id/GridLayout1&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:rowCount=&6&
android:columnCount=&4&
android:orientation=&horizontal&&
android:layout_columnSpan=&4&
android:text=&0&
android:textSize=&50sp&
android:layout_marginLeft=&5dp&
android:layout_marginRight=&5dp&
android:text=&回退&
android:layout_columnSpan=&2&
android:layout_gravity=&fill&
android:text=&清空&
android:layout_columnSpan=&2&
android:layout_gravity=&fill&
android:text=&+&
android:text=&1&
android:text=&2&
android:text=&3&
android:text=&-&
android:text=&4&
android:text=&5&
android:text=&6&
android:text=&*&
android:text=&7&
android:text=&8&
android:text=&9&
android:text=&/&
android:layout_width=&wrap_content&
android:text=&.&
android:text=&0&
android:text=&=&
&/GridLayout&
代码很简单,就是清除和回退按钮设置了跨两列而已,其他的都是直接添加的
每个组件默认是占一行,占一列
这里要说明一点:
通过android:layout_rowSpan和android:layout_columnSpan设置表明组件横越的行数与列数
再通过:android:layout_gravity = &fill& &设置表明组件填满所横越的整行或者整列
①GridLayout使用虚细线将布局划分为行,列和单元格,同时也支持在行,列上进行交错排列
②使用流程:
step 1:先定义组件的对其方式&android:orientation &水平或者竖直
step 2:设置组件所在的行或者列,记得是从0开始算的
step 3:设置组件横跨几行或者几列;设置完毕后,需要在设置一个填充:android:layout_gravity = &fill&
可能遇到的问题:
当读者将布局设置为GridLayout时,会出现莫名其妙的报错,
如果代码语法逻辑没有错的话,就可能是配置文件AndroidManifest.xml的问题了
因为GridLayout是android 4.0 后才推出的,API Level 为 14
只需要将配置文件中的MinSDK改成14或者以上版本即可,保存,问题就解决了!
低版本sdk使用GridLayout的方法
其实只需要导个包即可:
下载v7这个包
导入:sdk下的GridLayout目录:sdk\extras\android\support\v7\gridlayout
然后为需要用到的工程添加library即可
监于有些初学者连包都不会倒,这里就演示一下导包流程:
找到:sdk\extras\android\support\v7\gridlayout,点击ok后
如图,库就存在了(ps:因为笔者sdk是4.2的,所以才会显示感叹号..)
接着将它添入到工程中:
表明添加成功,接着在xml文件中我们就可以直接用了
在XML只要将GridLayout写成:
&android.support.v7.widget.GridLayout&
并添加一行命名空间,而不是替换:
xmlns:app=&/apk/res-auto&
给出V7的包的下载链接:
/s/1kTC2s3l
GridLayout的使用并不复杂,这节就写到这里
为了照顾部分初学者,有点啰嗦,忘读者见谅
感谢大家的支持,如果有什么纰漏的,忘读者给出,或者有什么好玩的实例
也可以和笔者说下,O(∩_∩)O谢谢!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1298531次
积分:13085
积分:13085
排名:第1077名
原创:184篇
转载:330篇
评论:123条
(1)(3)(1)(5)(44)(29)(27)(20)(5)(27)(33)(44)(93)(30)(31)(2)(8)(15)(4)(6)(4)(2)(1)(1)(3)(2)(9)(12)(15)(1)(4)(4)(5)(1)(3)(2)(5)(9)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'1293人阅读
工作记录(5)
近日项目需求,popupWindow弹出一个列表框,为方便起见我使用了GridLayout,但是坑逼的是里面的按钮排序要按照服务端的控制来指定,所以我就去查找了好久,终于找到了方法来应对。
GridLayout在布局中设置时,其子控件有相应属性指定是第几行第几列,如下:
android:layout_row=”1”
android:layout_column=”1”
但是代码中没有直接设置行列的方法,于是就通过设置LayoutParams来实现了,其中用到了
GridLayout.LayoutParams(GridLayout.spec(1), GridLayout.spec(1));
初始化LayoutParams时,就指定了当前控件在父布局中的位置, new GridLayout.LayoutParams(行,列);
而行数和列数的设置就用到了GridLayout.spec(1);括号里的数字就是具体对应的行列数。
至此子布局的重新排列就已经实现了,对于GridLayout、GridView、TableLayout他们之间的区别于联系,日后再来慢慢理会。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7340次
排名:千里之外
一款超有趣的交友软件,让该相遇的人相遇。
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'本帖子已过去太久远了,不再提供回复功能。#android&dev#&Android&4.0新增布局方式——GridLayout初步介绍
4.0中新增的布局——GridLayout初步研究:可以这么说这个布局绝对是开发者的福音,它大大简化了对复杂布局的处理,包括性能提高不是一倍两倍。它与GridView是完全不同的概念,GridView是一种适配器布局,它的继承关系是ViewGroup
& AdapterView & AbsListView
& GridView,而GridLayout的继承关系是ViewGroup
&& GridLayout,可以看出如果论辈分的话,GridLayout是GridView的爷爷辈的,但不是亲生爷爷哦,GridView的亲生爷爷是AdapterView,而GridLayout是AdapterView的兄弟。GridView的爷爷是适配器视图,当然爷爷的兄弟GridLayout就不应该是适配器视图了。
那么什么时候用孙子GridView什么时候用爷爷GridLayout呢?
类似九宫格这种可以采用GridView。但是像Android系统自带的计算器的界面就不可能通过GridView实现,如果使用GridLayout实现那就是so-easy的了。
& 另外GridLayout和RelativeLayout哪个更好用呢?Definitely
GridLayout!&
GridLayout和RelativeLayout也是兄弟关系,他们的父亲都是ViewGroup。当然晚出生的孩子GridLayout比RelativeLayout牛逼多了。
& 具体牛逼在哪儿呢?
拿一个登陆界面举例:登陆界面应该有登陆界面的标题、用户名和密码的label和输入框及确认登陆按钮
如果用相对布局实现肯定是可以实现的,需要相对布局里面控件与控件间的位置关系就复杂繁琐了。Android框架在将你定义的相对布局xml文件渲染给屏幕的时候,需要处理这么复杂的控件间的关系,肯定性能会受一定程度的影响。当然,用相对布局会比用多个线性布局嵌套性能要好一些。
但是,用GridLayout的话,渲染性能会比用相对布局好很多。因为GridLayout中的控件间的位置关系没那么复杂,就是指定将某个控件放到某行某列,占几行或占几列,布局xml写起来也是异常清爽。
但,GridLayout也有一个问题,那就是它是从android
4.0系统才引入的,也就是说只有4.0版本后的系统才可以使用这个布局,在其他系统中是不认的。难道就没有办法解决吗? 答案是:有的。
由于Android是开源的,所以所有人都可以查看GridLayout的内部实现源代码,于是有人就将实现机制移植到了之前的系统版本。
这里推荐一个GridLayout的第三方兼容包,可以兼容到android
1.5版本。给力呀!(注:Romain Guy说以后会推出官方兼容包,不过现在暂未出)
下面这个链接是Google Android
官方开发工程师Romain Guy 和&Chet Haase对android 4.0
的介绍视频,直接跳到36分钟34秒看GridLayout布局的介绍。(注:这个Romain
Guy就是网易公开课里Android公开课老师提到的那个。另:感谢国家,请自备翻墙工具)
Guy的Google+、twitter和StackOverflow账号如下,供参考:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 32位和64位的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信