为了更好的管理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组件:布局管理器的更多相关文章

  1. 安卓开发:UI组件-布局管理器和文本显示

    接下来的随笔,记录了在学习b站up主:天哥在奔跑,录制的教学视频的同时,进行一个app开发. up主:天哥在奔跑 视频地址:https://www.bilibili.com/video/av38409 ...

  2. 第1组UI组件:布局管理器

    1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...

  3. Android 布局管理器

    为了更好地管理Android应用程序的用户界面组件,Android它提供了一个布局管理.通过使用布局管理,Android具有良好的平台无关的图形用户界面应用程序. 平时,推荐布局管理器来管理分布式组件 ...

  4. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

  5. Android开发5:布局管理器2(表格布局TableLayout)

    版本:Android4.3 API18  学习整理:liuxinming 概念      TableLayout继承了LinearLayout,因此它的本质依然是线性布局管理器.      表格布局采 ...

  6. 二、Android应用的界面编程(二)布局管理器

    一.线性布局所有布局都可以作为容器类使用,因此可以调用多个重载的addView()向布局管理器中添加组件.实际上,我们完全可以用一个布局管理器嵌套到其他布局管理器中---因为布局管理器也继承了View ...

  7. android中的常用布局管理器(三)

    接上篇博客 (5)TableLayout     表格布局管理器 在android中,线性布局和表格布局用的是最多的. 在很多的输出操作中,往往会使用表格的形式对显示的数据进行排版,tablelayo ...

  8. [置顶] Android布局管理器 - 详细解析布局实现

    布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 : 在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相 ...

  9. Android布局管理器(线性布局)

    线性布局有LinearLayout类来代表,Android的线性布局和Swing的Box有点相似(他们都会将容器里面的组件一个接一个的排列起来),LinearLayout中,使用android:ori ...

随机推荐

  1. 用python来抓取“煎蛋网”上面的美女图片,尺度很大哦!哈哈

    所用Python环境为:python 3.3.2   用到的库为:urllib.request    re 废话不多说,先上代码: import urllib.request import re #获 ...

  2. 线程的interrupt()

    官网解释 If this thread is blocked in an invocation of the wait(), wait(long), or wait(long, int) method ...

  3. reduce()之js与python

    最近在自学python基础,发现很多js中的内置函数python中都存在,甚至比js更加简洁,下面说一下reduce()在js和python中的用法,做个对比便于记忆. reduce()简介: red ...

  4. mac安装genymotion遇到的问题记录

    1.出错内容:An error occured while deploying the file或者使用adb devices连接的时候出现下面的错误 adb server version (40) ...

  5. python struct的使用例子

    import struct i = 1024 # s0为一个字符串,长度为4,即占四个字节,这样方便传输与保存二进制数据. s0 = struct.pack(">I", i) ...

  6. 动态库(.so)隐藏函数名

    一.偶遇 error: undefined reference to  xxx 问题 尝试封装通用的接口到一个private.so,然后供客户端使用,private.so编译出来后由sample.cp ...

  7. Redis 部署安装

    一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...

  8. Xib设置label自动换行和Label的顶部对齐

    真的是不想说自己了,一个Xib纠结了一天,简直了,整整被虐了一上午啊...... 不知道这是Xcode8的问题呢....还是我的Xib约束什么的问题..... 只想说的是,以前也是这么设置的,明明可以 ...

  9. Python3 Selenium自动化web测试 ==>FAQ:隐式等待和sleep区别

    FAQ: 情景1: 设置等待时间 A方法:sleep 线程休眠,但只单次有效,其他操作需要加载等待时间,需要再次添加time.sleep() B方法:implicitly_wait() from se ...

  10. PHP非对称加密

    加密的类型: 在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文.目前主流加密手段大致可分为单向加密和双向加密. 单向加密:通过对数据进行摘要计算生成密文 ...