android 布局中 layout_gravity、gravity、orientation、layout_weight

2024-06-21 14:48

本文主要是介绍android 布局中 layout_gravity、gravity、orientation、layout_weight,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是

android:layout_gravity ( 是本元素相对于父元素的重力方向 )

android:gravity (是本元素所有子元素的重力方向)

android:orientation (线性布局以列或行来显示内部子元素)

android:layout_weight (线性布局内子元素对未占用空间【水平或垂直】分配权重值,其值越小,权重越大

                            前提是子元素 设置了 android:layout_width = "fill_parent" 属性(水平方向)

                               android:layout_height = "fill_parent" 属性(垂直方向)

 

如果某个子元素的 android:layout_width = "wrap_content"

           android:layout_height =" wrap_content”

android:layout_weight 的设置值 对该方向上空间的分配刚好相反。

下面以一个简单例子来说明这 4个参数

 1 <? xml version = "1.0" encoding = "utf-8" ?>
 2 
 3 < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
 4 
 5                            android:layout_height = "200dp"
 6 
 7                            android:layout_width = "200dp"
 8 
 9                            android:background = "#AABBCC"
10 
11                            android:orientation= "horizontal"
12 
13                            android:layout_gravity= "center" >
14 
15                            < TextView android:text = "ONE"
16 
17                                                android:background = "#aa0000"
18 
19                                                android:layout_height = "wrap_content"
20 
21                                                android:layout_width = "wrap_content"
22 
23                                                android:layout_margin = "1dp" />
24 
25                             < TextView android:text = "TWO"
26 
27                                                android:background = "#aa0000"
28 
29                                                android:layout_height = "wrap_content"
30 
31                                                android:layout_width = "wrap_content"
32 
33                                                android:layout_margin = "1dp" />
34 
35 </ LinearLayout >

说明:在上面的例子中,根布局是LinearLayout, 其包含有2 个TextView 视图,为了对参数 android:layout_gravity有直观的了解,对根布局 LinearLayout 特意加了 3 个参数

android:layout_height = "200dp"

android:layout_width   = "200dp"

android:background     = "#AABBCC"

为布局指定了固定的宽度和高度,以及背景颜色,上面的例子运行后效果如下图:

说明:对LinearLayout 中的参数android:layout_gravity 来说,其意义是指定本布局相对于父布局的重力方向,由于该布局的已经是根布局,其父布局是整个屏幕,那么该参数设置的是相对于屏幕的位置,可以换不同的参数top|bottom|left|right 等等参数来试验。

现在增加参数 android:gravity = "bottom|right" 完整 XML 如下,看看效果

 

 1 <? xml version = "1.0" encoding = "utf-8" ?>
 2 
 3 < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
 4 
 5                       android:layout_height = "200dp"
 6 
 7                       android:layout_width = "200dp"
 8 
 9                       android:background = "#AABBCC"
10 
11                       android:orientation="horizontal"
12 
13                       android:layout_gravity= "center"
14 
15                       android:gravity = "bottom|right " >
16 
17                       < TextView android:text = "ONE"
18 
19                                      android:background = "#aa0000"
20 
21                                      android:layout_height = "wrap_content"
22 
23                                      android:layout_width = "wrap_content"
24 
25                                      android:layout_margin = "1dp" />
26 
27                       < TextView android:text = "TWO"
28 
29                                      android:background = "#aa0000"
30 
31                                      android:layout_height = "wrap_content"
32 
33                                      android:layout_width = "wrap_content"
34 
35                                      android:layout_margin = "1dp" />
36 
37 </ LinearLayout >

 

 

通过改变android:gravity 参数的值可以看到实际效果。

参数 android:orientation= " horizontal " 决定了每个子元素各占一列,如果

参数 android:orientation= " vertical " 则每个子元素各占一行,也就是从上到下排列了。

对于 LinearLayout 布局的子元素,给每个子元素加上参数 android:layout_weight

看看效果

 

 1 <? xml version = "1.0" encoding = "utf-8" ?>
 2 
 3 < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
 4 
 5                       android:layout_height = "200dp"
 6 
 7                       android:layout_width = "200dp"
 8 
 9                       android:background = "#AABBCC"
10 
11                       android:layout_gravity = "center"
12 
13                       android:gravity = "bottom|right"
14 
15                       android:orientation = "horizontal" >
16 
17                       < TextView android:text = "ONE"
18 
19                                      android:background = "#aa0000"
20 
21                                      android:layout_height = "wrap_content"
22 
23                                      android:layout_width = "wrap_content"
24 
25                                      android:layout_margin = "1dp"
26 
27                                      android:layout_weight = "1" />
28 
29                       < TextView android:text = "TWO"
30 
31                                      android:background = "#aa0000"
32 
33                                      android:layout_height = "wrap_content"
34 
35                                      android:layout_width = "wrap_content"
36 
37                                      android:layout_margin = "1dp"
38 
39                                      android:layout_weight = "2" />
40 
41 </ LinearLayout >

 

Text 为ONE 的权重为1 ,但明显占的宽度比TWO 的小,百思不得其解,后来得知,如果把TextView 的参数android:layout_width = "wrap_content" 全部修改为 android:layout_width = "fill_parent", ok ,代码如下

 

 1 <? xml version = "1.0" encoding = "utf-8" ?>
 2 
 3 < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
 4 
 5                       android:layout_height = "200dp"
 6 
 7                       android:layout_width = "200dp"
 8 
 9                       android:background = "#AABBCC"
10 
11                       android:layout_gravity = "center"
12 
13                       android:gravity = "bottom|right"
14 
15                       android:orientation = "horizontal" >
16 
17                       < TextView android:text = "ONE"
18 
19                                      android:background = "#aa0000"
20 
21                                      android:layout_height = "wrap_content"
22 
23                                      android:layout_width = " fill_parent "
24 
25                                      android:layout_margin = "1dp"
26 
27                                      android:layout_weight = "1" />
28 
29                       < TextView android:text = "TWO"
30 
31                                      android:background = "#aa0000"
32 
33                                      android:layout_height = "wrap_content"
34 
35                                      android:layout_width = " fill_parent "
36 
37                                      android:layout_margin = "1dp"
38 
39                                      android:layout_weight = "2" />
40 
41 </ LinearLayout >

 

这篇关于android 布局中 layout_gravity、gravity、orientation、layout_weight的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081522

相关文章

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me