六大界面布局方式包括: 线性布局(LinearLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout) 。

1. LinearLayout线性布局

LinearLayout容器中的组件一个挨一个排列,通过控制android:orientation属性,可控制各组件是横向排列还是纵向排列。

LinearLayout的常用XML属性及相关方法

XML属性 相关方法 说明
android:gravity setGravity(int) 设置布局管理器内组件的对齐方式
android:orientation setOrientation(int) 设置布局管理器内组件的排列方式,可以设置为horizontal、vertical两个值之一

其中,gravity属性支持top, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。也可以同时指定多种对齐方式的组合。

LinearLayout子元素支持的常用XML属性及方法

XML属性 说明
android:layout_gravity 指定该子元素在LinearLayout中的对齐方式
android:layout_weight 指定子元素在LinearLayout中所占的权重

2. TableLayout表格布局

TableLayout继承自Linearout,本质上仍然是线性布局管理器。表格布局采用行、列的形式来管理UI组件,并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每向TableLayout中添加一个TableRow就代表一行;

每向TableRow中添加一个一个子组件就表示一列,可以通过android:layout_span="n"设置子组件占据n列;

如果直接向TableLayout添加组件,那么该组件将直接占用一行;

3. FrameLayout帧布局

FrameLayout直接继承自ViewGroup组件。帧布局为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

如果在同一个地方定义了多个控件,则后面的控件覆盖前面的空间。

4. RelativeLayout相对布局

RelativeLayout.LayoutParams里只能设为boolean的XML属性

XML属性 说明
android:layout_centerHorizontal 设置该子组件是否位于布局容器的水平居中
android:layout_centerVertical  
android:layout_centerParent  
android:layout_alignParentBottom  
android:layout_alignParentLeft  
android:layout_alignParentRight  
android:layout_alignParentTop

RelativeLayout.LayoutParams里属性值为其他UI组件ID的XML属性

XML属性 说明
android:layout_toRightOf 控制该子组件位于给出ID组件的右侧
android:layout_toLeftOf  
android:layout_above  
android:layout_below  
android:layout_alignTop  
android:layout_alignBottom  
android:layout_alignRight  
android:layout_alignLeft

5. GridLayout网格布局

GridLayout是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。

GridLayout提供了setRowCount(int)和setColumnCount(int)方法来控制该网格的行和列的数量

GridLayout常用的XML属性和方法说明

XML属性 相关方法 说明
android:alignmentMode setAlignmentMode(int) 设置该布局管理器采用的对齐模式
android:columnCount setColumnCount(int) 设置该网格的列数量
android:columnOrderPreserved setColumnOrderPreserved(boolean) 设置该网格容器是否保留序列号
android:roeCount setRowCount(int) 设置该网格的行数量
android:rowOrderPreserved setRowOrderPreserved(boolean) 设置该网格容器是否保留行序号
android:useDefaultMargins setUseDefaultMargins(boolean) 设置该布局管理器是否使用默认的页边距

在其中的组件常用的XML属性和方法说明

XML属性 说明
android:layout_column 设置该组件在GridLayout的第几列
android:layout_columnSpan 设置该子组件在GridLayout横向上跨几列
android:layout_gravity 设置该子组件采用何种方式占据该网格的空间
android:layout_row 设置该子组件在GridLayout的第几行
android:layout_rowSpan 设置该子组件在GridLayout纵向上跨几行

6. AbsoluteLayout绝对布局(不推荐)

即Android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。每个组件都可指定如下两个XML属性:

  • layour_x;
  • layout_y;

最新文章

  1. 在传统.NET Framework 上运行ASP.NET Core项目
  2. 关于java.lang.NoSuchMethodError: android.widget.RelativeLayout.setBackground的解决办法
  3. 从零开始攻略PHP(5)——字符串操作与POSIX正则
  4. SSH框架之Struts(2)——Struts的执行流程之配置文件
  5. [Jquery] Jquery获取浏览器宽高的代码
  6. Andriod:如何卸载模拟器上已经安装的应用程序?
  7. java I/O的基本使用
  8. 可清空文本的EditText
  9. cygwin org/apache/zookeeper/KeeperException
  10. Touch Punch在移动设备上面增加jQuery UI的触摸支持|Jquery UI 支持移动端 触摸滑动等
  11. twisted学习笔记 No.1
  12. LeetCode OJ 113. Path Sum II
  13. vue解决加载闪烁问题
  14. idea右键没有svn选项
  15. UVA - 12298 Super Poker II NTT
  16. nodejs 使用官方oracledb库连接数据库 教程
  17. SQL Server 函数之日期格式化函数
  18. GCD LCM UVA - 11388
  19. JFinal3.0 sql管理与动态生成
  20. SpringBoot与SpringCloud学习指南

热门文章

  1. 自动移动的ImageView
  2. PreApplicationStartMethodAttribute程序启动扩展
  3. Asp.Net Mvc控制器重名问题整理
  4. SVG.js 颜色渐变使用
  5. 局部响应归一化(Local Response Normalization,LRN)
  6. cross validation笔记
  7. 对拍练习:A+B
  8. ProDinner
  9. DIV+CSS规范命名集合
  10. Redis 在线管理工具(phpRedisAdmin)介绍