我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android常用布局(FrameLayout、LinearLayout、RelativeLayout)详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android常用布局(FrameLayout、LinearLayout、RelativeLayout)详解

很多开发者一听说Android终端的屏幕尺寸五花八门,屏幕分辨率千奇百怪,就觉得Android开发在屏幕适配方面是必定是一件头疼的事情。因为在Android问世之前,广大开发者知道的UI解决方案大致分为两类:

1、在Web开发中的CSS,一层一层的去层叠样式。
2、在iOS开发中去计算每一个UIView的尺寸。

上面两种方案,无论哪种方案面对碎片化严重的Android终端,那都是一场噩梦。好在Android提供了另一套解决方案来应对严重的终端碎片化,这就是布局和9-patch。

这里想来说说布局,在Android SDK刚刚问世的时候,Android提供了AbsoluteLayout,FrameLayout,LinearLayout,RelativeLayout和Tablelayout五大布局来应对终端碎片化问题。

但很快Android发现AbsoluteLayout是一个愚蠢的方案,在Android 1.5系统中就不再支持此布局,剩下的四个布局中,Tablelayout虽然依然被支持,但是由于Fragment以及新的TabLayout的出现,博主在此断言,Tablelayout也命不久矣,被移除支持只是迟早的事儿。

所以,Android的五大基本布局现在只剩下三个(这里说的是基本布局,在Android support包里引入的新的布局不计入内),下面分别介绍一下这三个基本布局。

一、FrameLayout
FrameLayout应该是Android系统中最简单的布局了,在FrameLayout中的元素,默认都是以FrameLayout控件的坐上顶点作为基准点,一层一层的重叠起来,后加进来的元素覆盖前面的元素。

下面先来一个演示,代码如下:


<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="#ff0000"/>
  <View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="#000000"/>
  <View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_margin="100dp"
    android:background="#00ff00"/>
</FrameLayout>

运行结果如下:

在代码里,有三个View,而在运行结果上只能看到两个View,一个黑色和一个绿色。这是因为红色的View被黑色的View盖住了。

在FrameLayout中,通过android:layout_gravity属性去指定子元素的位置,下面调整一下上诉例子中的黑色View的位置,让红色的View显示出来,调整后的代码如下:


<View
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:layout_gravity="bottom|right"
  android:background="#000000"/>

可以看到上面代码里添加了android:layout_gravity属性,并且指定了两个值,一个为bottom,一个为right,表示这个View将被放到FrameLayout的右下角。运行结果如下图所示:

二、LinearLayout
LinearLayout是线性布局,它可以让它内部的元素按照指定方向依次排开。LinearLayout的方向是通过android:orientation属性指定,并且可以通过android:gravity属性指定对其方式。

还是直接上段代码看看效果,代码如下:


<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center">
  <View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#ff0000"/>
  <View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#000000"/>
  <View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#00ff00"/>
</LinearLayout>

在代码中,设置了LinearLayout的方向为纵向,并且对其方式居中对齐,于是运行结果如下图所示:

除了android:orientation将设为vertical外,也可以设为horizontal。让LinearLayout内部的元素横向排列,将上面例子中的android:orientation属性值改为horizontal后的运行结果,如下图所示:

三、RelativeLayout
RelativeLayout是基本布局里面最灵活,也是最复杂的布局,它内部的元素可以通过设定彼此之间的相对关系来决定布局,使用RelativeLayout时,推荐为其内部每个元素都设定id,下面依然通过一个列子来演示此布局的使用方法。代码如下:


<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <View android:id="@+id/red"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#ff0000"/>
  <View android:id="@+id/black"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_toRightOf="@id/red"
    android:layout_below="@id/red"
    android:background="#000000"/>
  <View android:id="@+id/green"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_below="@id/black"
    android:layout_alignParentRight="true"
    android:background="#00ff00"/>
  <View android:id="@+id/gray"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_centerInParent="true"
    android:background="#888888"/>
  <View android:id="@+id/orange"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_toRightOf="@id/green"
    android:layout_below="@id/gray"
    android:background="#ff8800"/>
</RelativeLayout>

先分析代码,可以看到每一个View都被设置了一个id值,分别为red,black,green,gray和orange。然后通过代码,可以看出black位于red的右边和下面,green位于black的下面并且右对齐其父元素(即RelativeLayout),gray居中对齐父元素(即RelativeLayout), orange位于green的右边同时位于gray的下面,运行结果如图所示:

在此在归纳一下RelativeLayout中,与布局相关的属性

android:layout_below:位于指定元素的下方
android:layout_above:位于指定元素的上方
android:layout_toLeftOf:位于指定元素的左侧
android:layout_toRightOf:位于指定元素的右侧
android:layout_centerVertical:垂直居中对齐父元素
android:layout_centerHorizontal:水平居中对齐父元素
android:layout_centerInParent:居中对齐父元素
android:layout_alignParentRight:与父元素右对齐
android:layout_alignParentLeft:与父元素左对齐
android:layout_alignParentTop:与父元素上对齐
android:layout_alignParentBottom:与父元素下对齐
android:layout_alignRight:与指定元素右对齐
android:layout_alignLeft:与指定元素左对齐
android:layout_alignTop:与指定元素上对齐
android:layout_alignBottom:与指定元素下对齐
从Android 4.2开始,也就是从API Level 17开始,Android增强了RelativeLayout,使其能够更好的应对并本地化这一需求,比如在有的国家,文字是从右往左阅读,这也就是所说的RTL。为了应对RTL,RelativeLayout又增加了以下属性:

android:layout_alignStart:与指定元素的开始位置对齐
android:layout_toStartOf:位于指定元素的开始侧
android:layout_alignParentStart:与父元素与开始侧对齐
android:layout_alignEnd:与指定元素的结束始位置对齐
android:layout_toEndOf:位于指定元素的结束侧
android:layout_alignParentEnd:与指定元素的结束位置对齐
这里的开始和结束我们可以做如下理解:

开始:在从左到右阅读习惯的国家,开始侧等于左侧,toStartOf的显示效果就等于toLeftOf。但是在从右往左阅读习惯的国家,那么开始侧就变成了右侧,toStartOf的显示效果就等于了toRightOf。
结束:同上面对开始的理解一样,结束侧在从左到右阅读习惯的国家就是右侧,反之则在左侧。

原文链接:http://lyjbk.com/archives/158.html

您可能感兴趣的文章:Android布局之FrameLayout帧布局Android下拉刷新PtrFrameLayout的使用实例代码简析Android五大布局(LinearLayout、FrameLayout、RelativeLayout等)FrameLayout和Fragment处理Android应用UI布局实例Android入门之RelativeLayout、FrameLayout用法分析Android自定义View设定到FrameLayout布局中实现多组件显示的方法 分享基于AnDroid FrameLayout的使用详解Android布局之帧布局FrameLayout详解


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android常用布局(FrameLayout、LinearLayout、RelativeLayout)详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android常用布局(FrameLayout、LinearLayout、RelativeLayout)详解

很多开发者一听说Android终端的屏幕尺寸五花八门,屏幕分辨率千奇百怪,就觉得Android开发在屏幕适配方面是必定是一件头疼的事情。因为在Android问世之前,广大开发者知道的UI解决方案大致分为两类: 1、在Web开发中的CSS,一
2022-06-06

简析Android五大布局(LinearLayout、FrameLayout、RelativeLayout等)

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayou
2022-06-06

Kotlin LinearLayout与RelativeLayout布局使用详解

Kotlin 的基本特性就先写到这里,我们这个系列的定位是基础,也就是能用就好,够用就好,我们不会举太多的例子,但是这些都是最经常用到的特性。从这节开始就是Kotlin和android 进行结合,使用Kotlin进行安卓应用的开发了
2022-12-08

Android应用的LinearLayout中嵌套RelativeLayout的布局用法

想将Button和ListView分别放在屏幕的一左一右。 单纯使用android:gravity和android:layout_gravity不成功。 于是涉及到RelativeLayout。 关键为:android:layout_ali
2022-06-06

Android布局控件之常用linearlayout布局

LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个widget或者是co
2022-06-06

Android AbsoluteLayout和RelativeLayout布局详解

Android 线性布局: AbsoluteLayout布局和RelativeLayout布局。 1、绝对布局 AbsoluteLayout绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简
2022-06-06

Android UI组件LinearLayout线性布局详解

LinearLayout 线性布局,该布局的继承关系: 1. 什么是线性布局 通俗的说感觉起来和线有关,参照线的特点,有么是横向的,要么是竖向的。 LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列(通过a
2022-06-06

Android编程之绝对布局AbsoluteLayout和相对布局RelativeLayout实例详解

本文实例分析了Android编程之绝对布局AbsoluteLayout和相对布局RelativeLayout。分享给大家供大家参考,具体如下: 一、绝对布局AbsoluteLayout 绝对定位AbsoluteLayout,又可以叫做坐标
2022-06-06

Android App中使用LinearLayout进行居中布局的实例讲解

要想让您的控件水平居中或垂直居中其实很简单,只要在控件的上一级中设置【android:gravity="center"】属性即可 如:2022-06-06

Android常用布局使用技巧示例讲解

本文详细介绍了Android常用布局,包括LinearLayout、RelativeLayout、FrameLayout、ConstraintLayout等,分析了它们的适用场景、优缺点和使用技巧,帮助开发者更好地选择和使用合适的布局,提升UI设计和开发效率
2023-05-17

Android五大布局与实际应用详解

Android总体有五大布局:线性布局(LiearLayout): 屏幕垂直或水平方向布局。帧布局(FrameLayout):控件从屏幕左上角开始布局。相对布局(RelativeLayout): 以其他控件为参照布局。绝对布局(Absolu
2022-06-06

JavaAWT中常用的三种布局管理器详解

这篇文章主要介绍了JavaAWT中常用的三种布局管理器详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-23

CSS Flex弹性布局详解!常用的12个属性

CSS Flex弹性布局是一种用于布局网页元素的技术,它通过一系列的属性来定义弹性容器和其内部元素的行为。以下是常用的12个CSS Flex属性的详细解释:1. `flex-direction`:用于设置弹性容器的主轴方向,可以是水平方向(
2023-10-10

web前端:html/css弹性布局的几大常用属性详解

编程学习网:在css1中,样式通常是基于在html源代码中出现的标记和属性。对于很多设计情景而言这种做法完全可行,但是它无法实现设计者希望获得的一些常见的设计效果。
web前端:html/css弹性布局的几大常用属性详解
2024-04-23

详解Android应用中使用TabHost组件进行布局的基本方法

TabHost布局文件 我们先来了解一下布局文件的基本内容: 1. 根标签及id 设置Android自带id : XML布局文件中, 可以使用 标签设置, 其中的id 需要引用 android的自带id :android:id=@andro
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录