请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 5003|回复: 4

Anroid UI——布局

[复制链接]

13

主题

18

帖子

154

积分

注册会员

Rank: 2

积分
154
发表于 2020-1-26 09:56:32 | 显示全部楼层 |阅读模式
一、Android六大基本布局


  • Android六大基本布局分别是:线性布局LinearLayout、表格布局TableLayout、相对布局RelativeLayout、帧布局FrameLayout、绝对布局AbsoluteLayout、网格布局GridLayout。
  • 其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局。

二、LinearLayout(线性布局)

常用属性:


  • android:id:为该组件添加一个资源id,即标识符,可以通过id来找到该布局或者控件。
  • android:layout_width:布局的宽度,用wrap_content表示组件的实际宽度,match_parent表示填充父容器
  • android:layout_height:布局的长度,用wrap_content表示组件的实际长度,match_parent表示填充父容器
  • android:orientation:布局中的排列方式,有两种方式:horizontal水平,vertical竖直,如果不设置则默认水平显示

    • orientation 是一个视图组,可以在一个方向垂直或者水平分布所有子项
    • 当 android:orientation=“vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用.即:left,right,center_horizontal 是生效的.
    • 当 android:orientation=“horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用.即:top,bottom,center_vertical 是生效的.

  • android:gravity:控制组件所包含的子元素的对齐方式
  • android:layout_gravity:控制该组件在父容器里的对齐方式

    • android:layout_gravity是本(子)元素相对于父元素的对齐方式设置在子元素上.
    • android:gravity="bottom|right"是本(父)元素所有子元素的对齐方式,设置在父元素上,多个值用 | 隔开.
    • 其属性值分别为:center(整体居中)、center_vertical(垂直居中)、center_horizontal(水平居中)、right(居右)、left(居左)、bottom(底部)和top(顶部)

  • android:background:为该组件添加一个背景图片或者背景颜色,颜色常以六位的十六进制表示
  • android:layout_margin :外边距,布局或控件距离外部元素的边距
  • android:layout_padding :内边距,布局或控件距离内部元素的边距
  • android:layout_weight:权重,除了被显示占据的空间以外的的空间,然后根据权重的大小来分配空间,使用权重通常会把分配该权重方向的宽度设置为0dp,如果未设置0dp,则该控件会占据指定的宽度,然后再加上根据权重来分配的空间
三、RelativeLayout(相对布局)

第一类属性 属性值为true或者false


  • android:layout_centerHrizontal 水平居中
  • android:layout_centerVertical 垂直居中
  • android:layout_centerInparent 相对于父控件完全居中
  • android:layout_alignParentBottom 贴紧父控件的下边缘
  • android:layout_alignParentLeft 贴紧父控件的左边缘
  • android:layout_alignParentRight 贴紧父控件的右边缘
  • android:layout_alignParentTop 贴紧父控件的上边缘
  • android:layout_alignWithParentIfMissing 如果对应的兄弟控件找不到的话,就以父控件作为参照物
第二类属性 属性值必须为id的引用名“@id/id-name”


  • android:layout_below 在某控件下方
  • android:layout_above 在某控件上方
  • android:layout_toLeftOf 在某控件的左边
  • android:layout_toRightOf 在某控件的右边
  • android:layout_alignTop 本控件的上边缘和某控件的上边缘对齐
  • android:layout_alignLeft 本控件的左边缘和某控件的左边缘对齐
  • android:layout_alignBottom 本控件的下边缘和某控件的下控件对齐
  • android:layout_alignRight 本控件的右边缘和某控件的有边缘对齐
第三类:属性值为具体的像素值,如30dip,40px


  • android:layout_marginBottom 离某控件底边缘的距离
  • android:layout_marginLeft 离某控件左边缘的距离
  • android:layout_marginRight 离某控件右边缘的距离
  • android:layout_marginTop 离某控件上边缘的距离
四、GridLayout(网格布局)

Android4.0之后新加的布局管理器
能够把整个容器划分为rows*columns的网格,每个网格可以放置一个组件
可以设置一个组件横跨多少列或者纵跨多少行
当单元格大小大于组件大小时,可以通过设置layout_grativity属性值,设置组件在单元格里的位置
通过设置layout_columnWeight/layout_rowWeight属性值,可以设置各个组件的大小比例
GridLayout 使用属性


  • android:columnCount        最大列数
  • android:rowCount        最大行数
  • android:orientation        GridLayout中子元素的布局方向
  • android:alignmentMode        alignBounds:对齐子视图边界 alignMargins :对齐子视距内容,默认值
  • android:columnOrderPreserved        使列边界显示的顺序和列索引的顺序相同,默认是true
  • android:rowOrderPreserved        使行边界显示的顺序和行索引的顺序相同,默认是true
  • android:useDefaultMargins        没有指定视图的布局参数时使用默认的边距,默认值是false
item属性


  • android:layout_column        指定该单元格在第几列显示
  • android:layout_row        指定该单元格在第几行显示
  • android:layout_columnSpan        指定该单元格占据的列数
  • android:layout_rowSpan         指定该单元格占据的行数
  • android:layout_gravity        指定该单元格在容器中的位置
  • android:layout_columnWeight        (API21加入)列权重
  • android:layout_rowWeight        (API21加入) 行权重
  • android:layout_gravity        作用

    • center        不改变元素的大小,仅居中
    • center_horizontal        不改变大小,水平居中
    • center_vertical        不改变大小,垂直居中
    • top        不改变大小,置于顶部
    • left        不改变大小,置于左边
    • bottom        不改变大小,置于底部
    • right        不改变大小,置于右边
    • start        不改变大小,根据系统语言,置于开始位置
    • end        不改变大小,置于结尾
    • fill        拉伸元素控件,填满其应该所占的格子
    • fill_vertical        仅垂直方向上拉伸填充
    • fill_horizontal        仅水平方向上拉伸填充
    • clip_vertical        垂直方向上裁剪元素,仅当元素大小超过格子的空间时
    • clip_horizontal        水平方向上裁剪元素,仅当元素大小超过格子的空间时
    • 注意:使用layout_columnSpan 、layout_rowSpan时要加上layout_gravity属性,否则没有效果;另外item在边缘时宽高计算会出现错误,需要我们手动设置宽高,否则达不到想要的效果

五、TableLayout(表格布局)

继承LinearLayout
不需要明确的申明包含多少行多少列
通过添加 TableRow / 其他组件 来控制表格的行数和列数
单元格设置格式有3种:Shrinkable(可收缩),Stretchable(可拉伸),Collapsed(隐藏的)
  1.    
复制代码
六、FrameLayout(帧布局)


  • 所有的控件都会默认摆放在布局的左上角
  • 使用android:layout_gravity属性来指定控件在布局中的对齐方式,这和LinearLayout中的用法是相似的。
  • FrameLayout由于定位的欠缺,导致它的应用场景也比较少,不过之后使用Fragment碎片的时候是可以使用到的。
                                                                                                                                       
                                                    
  • 点赞                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        94qiang                                                                发布了3 篇原创文章 · 获赞 0 · 访问量 1261                                                                                            私信                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:2020 1 22
下一篇:洛谷 P1583 魔法照片
回复

使用道具 举报

0

主题

16

帖子

346

积分

中级会员

Rank: 3Rank: 3

积分
346
发表于 2020-2-11 09:58:41 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

0

主题

12

帖子

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 2020-2-13 17:56:03 | 显示全部楼层
感谢楼主的无私分享![www.12360.co]
回复

使用道具 举报

0

主题

18

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
发表于 2020-2-14 15:09:28 | 显示全部楼层
这东西我收了!谢谢楼主![www.12360.co]
回复

使用道具 举报

0

主题

21

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
发表于 3 天前 | 显示全部楼层
楼主,大恩不言谢了![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-29 21:45 , Processed in 0.091201 second(s), 25 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表