Android五大UI布局的特有属性

Android五大UI布局

1.  LinearLayout   线性布局
2.  RelativeLayout  相对布局
3.  FrameLayout   帧布局,空白布局
4.  GridLayout    网格布局
5.  AbsoluteLayout   绝对布局
  • 一、线性布局LinearLayout

框架结构如下:

独有属性:

1、排列方向:vertical  竖向,horizontal 横向 如:android:orientation="vertical"

2、 设置当前控件在父控件范围内所处的位置(如居中,右下角等特殊位置) 如 :android:layout_gravity此属性存在一个bug:
(1)当orientation为vertical时,那么所有跟高度相关的属性值都会失效.(2)当orientation为Horizontal时,那么所有跟宽度相关的属性值都会失效.
  • 原因:(以vertical方向为例)支持无限摆放子控件,顶多超出指定宽高区域范围的不显示,但是也不会报错。因此,依据此特点,无法确定线性的高具体是多少。bottom以及center_vertical等有关高度的属性都需要根据高度进行计算。 高度无法确定,因此,所有跟高度相关的属性值均会失效。(Horizontal方向原因与上面的原因类似)。

  • 使用样例

使用效果如下:

  • 由以上效果可知:LinearLayout为垂直方向(android:orientation=”vertical”)所以代码 android:layout_gravity=”bottom”并没有起到将文本放到底部的作用,即垂直方向上不起作用。而水平方向上却向左移动了40dp的距离

  • 3、设置权重,即设置兄弟控件之间宽或高的比例关系。当使用此属性值,如果是给宽度设置比例关系,那么将layout_width的属性值设置为0dp或wrap_content。如果是给高度设置比例关系,那么layout_weight的属性值设置为0dp或wrap_content。

  • 使用时注意:如果是horizontal方向的线性布局,那么使用weight属性控制宽度的比例关系,如果是vertical方向的线性布局,那么使用weight属性控制高度的比例关系.

  • android:weightSum 此属性只能写在Linearlayout标签中,用于设置比例关系几分之几中的分母可省略不写,如果不写的话,那么分母由所有layout_weight属性的和决定

  • 使用样例:

使用效果:

由效果图可知两个文本框的比例在水平方向上为1:3

二、相对布局RelativeLayout

框架结构如下:

特点 :

1.  每一个控件默认位置是位于左上角
2.  当想要给控件设置位置时,此位置必然是参照父控件区域或者兄弟控件调整位置的

相对于父控件的属性:

以下所有属性的属性值设置的均为:true或者false写false与没写此属性效果相同控制居中的:
android:layout_centerInParent   水平,垂直同时居中
android:layout_centerHorizontal  水平居中
android:layout_centerVertical   垂直居中控制贴边的:
android:layout_alignParentLeft  让当前控件的左边缘紧贴父控件的左边缘
android:layout_alignParentTop   让当前控件的顶边缘紧贴父控件的顶边缘
android:layout_alignParentRight 让当前控件的右边缘紧贴父控件的右边缘
android:layout_alignParentBottom让当前控件的底边缘紧贴父控件的底边缘

三、帧布局 FrameLayout

特点:

1.  所有控件的默认位置都是左上角,想要控制控件的显示位置,只能用layout_gravity属性控制
2.  通常配合Fragment使用

四、绝对布局 AbsoluteLayout

  • 绝对布局(目前此布局基本被废弃)

特点:

在设置控件的显示位置时,只需通过属性设置控件左上角的坐标点即可

五、网格布局GridLayout

框架结构如下:

网格布局 4.0以后出的, 4.0以前的网格布局使用TableLayout

特点:

1.  整体的页面会按要求分为n行n列的网格,可以将控件直接放置在指定的行和列中
2.  网格也可以实现跨行或跨列显示,如一个网格的高度可以直接占据两行的高度
3.  可以省略layout_width和layout_height属性

独有属性:

android:rowCount="4"  指定总行数
android:columnCount="4"  指定总列数指定控件位于网格的第几行第几列中android:layout_row="0"android:layout_column="0"android:layout_rowSpan="2"  将控件的高度拉伸为2行的高度android:layout_columnSpan="2"   将控件的宽度拉伸为2列的宽度注意: 以上两个拉伸的属性必须配合android:layout_gravity="fill"才能生效
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" android:rowCount="4"android:columnCount="4"><TextView
        android:layout_width="50dp"android:layout_height="50dp"android:text="1"android:background="#ff0000"android:layout_row="0"android:layout_column="0"/><TextView
        android:layout_width="50dp"android:layout_height="50dp"android:text="1"android:background="#ff0000"android:layout_row="0"android:layout_column="1"/><TextView
          android:layout_width="50dp"android:layout_height="50dp"android:text="2"android:background="#00ff00"android:layout_row="1"android:layout_column="0"android:layout_columnSpan="2"android:layout_gravity="fill"/><TextView
        android:layout_width="50dp"android:layout_height="wrap_content"android:text="3"android:background="#0000ff"android:layout_row="0"android:layout_column="2"android:layout_rowSpan="2"android:layout_gravity="fill"/>
</GridLayout>

效果如下:

Android应用开发(1)---Android五大UI布局的特有属性相关推荐

  1. android基础开发 书,Android 开发基础

    (一)认识Android Studio Android Studio 是谷歌推出的一个Android集成开发工具,Android Studio 提供了集成的 Android 开发工具用于开发和调试. ...

  2. 【Android FFMPEG 开发】Android 中使用 FFMPEG 对 MP3 文件进行混音操作

    文章目录 一.前置操作 ( 移植 FFMPEG ) 二.FFMPEG 混音命令 三.Android FFMPEG 混音源代码完整示例 四.博客源码 一.前置操作 ( 移植 FFMPEG ) 参考 [A ...

  3. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

  4. 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )

    文章目录 I . CMake 引入动态库与静态库区别 II . Android Studio 中 CMake 引入动态库流程 III . 指定动态库查找路径 IV . 链接函数库 V . 完整代码示例 ...

  5. 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    文章目录 I . CMake 简介 II . Android Studio 中 CMake 引入静态库流程 III . 指定 CMake 最小版本号 IV . 导入函数库 ( 静态库 / 动态库 ) ...

  6. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  7. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )

    文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  8. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  9. 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )

    文章目录 I . 任务亲和性 ( taskAffinity ) 简介 II . 任务亲和性 ( taskAffinity ) 设置 III . 任务亲和性 ( taskAffinity ) 与 FLA ...

最新文章

  1. 工厂方法注入(静态和非静态)
  2. jQuery的JSONP
  3. matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...
  4. *【POJ - 2796】 Feel Good (前缀和优化+单调栈维护)
  5. AI 时代下的海量业务智能监控实践
  6. 第一次加入博客那,鼓励一下自己先
  7. mysql 查询优化 ~ 善用profie利器
  8. 数学分析 导数的四则运算法则及多个函数的推广
  9. H5图像遮罩-遁地龙卷风
  10. 3dsMax批量设置可编辑样条线的视口渲染
  11. android 字体显示框架,资源样式 - 主题 - 《XUI - Android 原生 UI 框架》 - 书栈网 · BookStack...
  12. GitHub前50名的Objective-C动画相关库相关推荐,请自行研究
  13. 关于指针的面试题,指向字符串和字符数组的单指针,二级指针,三级指针的使用。
  14. 终面(hr)可能的问题及回答(Java岗--自用)
  15. MNE-Python | 开源生理信号分析神器(一)
  16. nginx代理ajax跨域请求
  17. 【Linux Centos6/7 Oracle11g数据库开启归档日志功能】
  18. 【十二】Python全栈之路--推导式_生成器
  19. 【博学谷学习记录】超强总结,用心分享| jQuery简介
  20. 【目标追踪】三帧差法原理及实现

热门文章

  1. c语言复杂函数转换,详解C语言常用的一些转换工具函数.pdf
  2. 计算机专业自我总结1000字,计算机专业自我鉴定范文1000字
  3. reflectasm --反射工具
  4. C# 输入一个整数,求质因数
  5. jQuery选择器之id选择器
  6. Linux shell - 按时间和文件大小排序显示文件(ll)
  7. 查看Orcale数据里的表是否有变化
  8. SQLSERVER2005行版本控制的使用总结
  9. jQuery 往table添加新内容有以下四个方法:
  10. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)