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 ...
随机推荐
- Python面试题: 判断IP地址是否合法
题目: 给出一个字符串, 判断其是否是是合法的IP(IPv4)地址 思路 将字符串按"."分割成4段得到一个列表 逐个判断列表中的字符串是否数字格式并且在0~255之间, 是在新列 ...
- Django-模板继承/组件/自定义标签
一.标签tags for标签 遍历每一个元素: 写个for,然后 tab键自动生成for循环的结构,循环很基础,就这么简单的用,没有什么break之类的,复杂一些的功能,你要通过js def get ...
- Palindrome Degree(CodeForces 7D)—— hash求回文
学了kmp之后又学了hash来搞字符串.这东西很巧妙,且听娓娓道来. 这题的题意是:一个字符串如果是回文的,那么k值加1,如果前一半的串也是回文,k值再加1,以此类推,算出其k值.打个比方abaaba ...
- C++ #include<algorithm>
今天下午大致学完了进阶指南中algorithm头文件下的内容,在这里进行一个总结. reverse翻转 顾名思义,reverse进行的操作就是翻转原来的顺序,理解非常简单,故不赘述. 操作样例 ...
- Amdahl定律和可伸缩性
性能的思考 提升性能意味着可以用更少的资源做更多的事情.但是提升性能会带来额外的复杂度,这会增加线程的安全性和活跃性上的风险. 我们渴望提升性能,但是还是要以安全为首要的.首先要保证程序能够安全正常的 ...
- 打印li索引值
<ul> <li>这是第一条alert(0)</li> <li>这是第二条alert(1)</li> <li>这是第三条aler ...
- HearthBuddy炉石兄弟 如何调试ai
Sepefeets's update to botmaker's Silverfish AI This AI is a Custom Class for Hearthranger and Hearth ...
- CNN基础框架简介
卷积神经网络简介 卷积神经网络是多层感知机的变种,由生物学家休博尔和维瑟尔在早期关于猫视觉皮层的研究发展而来.视觉皮层的细胞存在一个复杂的构造,这些细胞对视觉输入空间的子区域非常敏感,我们称之为感受野 ...
- SpringCloud(四)之Netflix开源组件断路器Hystrix介绍
一.前言? 1.Netflix Hystrix断路器是什么? Netflix Hystrix是SOA/微服务架构中提供服务隔离.熔断.降级机制的工具/框架.Netflix Hystrix是断路器的一种 ...
- 转 CentOS7使用firewalld打开关闭防火墙与端口
http://blog.csdn.net/huxu981598436/article/details/54864260 开启端口命令 输入firewall-cmd --query-port=6379/ ...