Android UI组件:布局管理器
为了更好的管理Android应用的用户界面中的组件,Android提供了布局管理器。通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性。通常,推荐使用布局管理器来管理组件的分布、大小,而不是直接设置组件位置和大小。例如,当设置一个文本框(TextView),为了让这个文本框在不同的手机屏幕上都能良好的运行,手动的控制它的大小及位置将给编程带来巨大的困难,而使用布局管理器则可以解决这个问题,布局管理器可以根据运行平台来调整组件的大小,而程序员需要做的,仅仅是为容器选择合适的布局管理器。
Android的布局管理器本身也是一个UI组件,Android中的所有布局管理器都是ViewGroup的子类。所有的布局管理器都可以作为容器类使用,因此可以调用多个重载的addView()向布局管理器中添加组件,我们也可以在一个布局管理器中嵌套其他的布局管理器,因为布局管理器也继承了View,也可作为普通的UI组件使用。
**GridLayout和RelativeLayout已被Android9标注为不推荐使用,推荐使用ConstraintLayout替代它们,
⒈LinearLayout(线性布局)
线性布局由LinearLayout类来代表,线性布局有点像Swing编程里的Box,它们都会将容器里的组件一个挨着一个排列起来。LinearLayout可以控制各组件时横向排列还是纵向排列(通过属性android:orientation控制)。
Android的线性布局不会换行,当组件一个挨着一个排列到头之后,剩下的组件将不会显示出来。
LinearLayout常用的XML属性及相关方法如下表:
| XML属性 | 相关方法 | 说明 |
| android:baselineAligned | setBaselineAligned(boolean) |
该属性设置为false,将会阻止该布局管理器与 它的子元素的基线对齐 |
| android:divider | setDividerDrawable(Drawable) | 设置垂直布局时两个按钮之间的分割线 |
| android:gravity | setGravity(int) |
设置布局管理器内组件的对齐方式。该属性 支持top、bottom、left、right、center_vertical、 fill_vertical、center_horizontal、fill_horizontal、 center、fill、clip_vertical、clip_horizontal几个属性值。 也可以同时指定多种对齐方式的组合。例如left|center_vertical 代表出现在屏幕左边而且垂直居中。 |
| android:measureWithLargestChild | setMeasureWithLargestChildEnabled(boolean) |
当该属性设置为true时,所有带权重的子元素都会具有 最大子元素的最小尺寸 |
| android:orientation | setOrientation(int) |
设置布局管理器内组件的排列方式,可以设置为horizontal (水平排列)、vertical(垂直排列,默认值)两个值的 其中之一 |
| android:weightSum | 设置该布局管理器的最大权值和 |
LinearLayout包含的所有子元素都受LinearLayout.LayoutParams控制,因此LinearLayout包含的子元素可以额外指定如下属性。
| XML属性 | 相关方法 | 说明 |
| android:layout_gravity | 指定该子元素在LinearLayout中的对齐方式 | |
| android:layout_weight | 指定该子元素在LinearLayout中所占的权重 |
**基本上很多布局管理器都提供了相应的LayoutParams内部类,该内部类用于控制它们的子元素支持指定android:layout_gravity属性,该属性设置该子元素在父容器中的对齐方式。与android:layout_gravity相似的属性还有android:gravity属性(一般容器才支持指定该属性),该属性用于控制它所包含的子元素的对齐方式。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="bottom|center_horizontal"
tools:context=".MainActivity"> <Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" /> <Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" /> <Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" /> <Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
** @+id 是指创建一个id的意思
⒉TableLayout(表格布局)
Android UI组件:布局管理器的更多相关文章
- 安卓开发:UI组件-布局管理器和文本显示
接下来的随笔,记录了在学习b站up主:天哥在奔跑,录制的教学视频的同时,进行一个app开发. up主:天哥在奔跑 视频地址:https://www.bilibili.com/video/av38409 ...
- 第1组UI组件:布局管理器
1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...
- Android 布局管理器
为了更好地管理Android应用程序的用户界面组件,Android它提供了一个布局管理.通过使用布局管理,Android具有良好的平台无关的图形用户界面应用程序. 平时,推荐布局管理器来管理分布式组件 ...
- 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity
问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...
- Android开发5:布局管理器2(表格布局TableLayout)
版本:Android4.3 API18 学习整理:liuxinming 概念 TableLayout继承了LinearLayout,因此它的本质依然是线性布局管理器. 表格布局采 ...
- 二、Android应用的界面编程(二)布局管理器
一.线性布局所有布局都可以作为容器类使用,因此可以调用多个重载的addView()向布局管理器中添加组件.实际上,我们完全可以用一个布局管理器嵌套到其他布局管理器中---因为布局管理器也继承了View ...
- android中的常用布局管理器(三)
接上篇博客 (5)TableLayout 表格布局管理器 在android中,线性布局和表格布局用的是最多的. 在很多的输出操作中,往往会使用表格的形式对显示的数据进行排版,tablelayo ...
- [置顶] Android布局管理器 - 详细解析布局实现
布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 : 在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相 ...
- Android布局管理器(线性布局)
线性布局有LinearLayout类来代表,Android的线性布局和Swing的Box有点相似(他们都会将容器里面的组件一个接一个的排列起来),LinearLayout中,使用android:ori ...
随机推荐
- 【csp模拟赛4】旅行计划 (travelling.cpp)--欧拉回路
[题目描述] 小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅 行时并不关心到达了哪个网红景点打了哪些卡.小 Z 更关注沿路的风光,而且 小 Z 觉得,尽管多次到达同一个地方, ...
- Docker容器常用命令汇总
Docker常用命令总结如下: # 查看docker详细信息 docker info # 获取当前节点所有容器 docker ps -a # 管理容器生命周期 docker [start|stop|r ...
- python并发——从线程池获取返回值
并发是快速处理大量相似任务的绝佳办法,但对于有返回值的方法,需要一个容器专门来存储每个进程处理完的结果 from multiprocessing import Pool import time #返回 ...
- json常用的注解
json注解: 1.@JsonIgnoreProperties: 此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 写法将此标签加在model ...
- Nginx之最简单的反向代理机制分析
注:当前分析基于 Nginx之搭建反向代理实现tomcat分布式集群 的配置. 1. 用到的指令 下面介绍在上面的配置中用到的指令. upstream 指令 语法:upstream name { .. ...
- js获取后台传给前台的值
1.后台传给前台的方法 String rulemodeid=req.getParameter("rulemodeid"); req.setAttribute("rulem ...
- 11 MySQL之性能优化
01-优化简介 MySQL数据库优化是多方面的,原则是减少系统瓶颈,减少资源的占用,增加系统的反应速度. 1.通过优化文件系统,提高磁盘I\O的速写速度: 2.通过优化操作系统的调度策略,提高MySQ ...
- Aria2Gee 教程
改定履历 Aria2Gee是什么 开始之前 aria2 frp Aria2Gee可能存在的问题 初级教程 插件的安装 运行状态说明 下载测试 进阶教程 下载百度网盘文件 网盘助手的安装 网盘助手的配置 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
笔记 3.高级篇幅之Zuul常用问题分析和网关过滤器原理分析 简介:讲解Zuul网关原理和过滤器生命周期, 1.路由名称定义问题 路由映射重复覆盖问题 ...
- MATLAB学习(二)读写xls文件
>> N=xlsread('DRINK.xls','DRINK','A1:D8') N = 207.2000 3.3000 15.5000 2.8000 36.8000 5.9000 12 ...