首页 > 其他分享 >android FrameLayout、LinearLayout和RelativeLayout的学习

android FrameLayout、LinearLayout和RelativeLayout的学习

时间:2024-02-07 17:34:16浏览次数:23  
标签:layout 视图 FrameLayout RelativeLayout android LinearLayout

一、FrameLayout

目的:FrameLayout是一个设计用来存放单个子项的简单容器。它通常被用来堆叠视图,即将多个元素重叠在一起。

布局:子视图堆叠在一起,默认情况下都是放置在左上角,但可以通过android:layout_gravity属性改变子视图的位置。

性能:由于FrameLayout结构简单,所以相对来说比较高效,适合作为其他复杂布局的容器。

应用场景:常用于那些需要重叠显示的场合,如放置一个加载动画在内容上方,或者在图片上覆盖一层半透明的遮罩层等。如下用FrameLayout实现一个按钮在图片上居中的布局

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <ImageView
        android:src="@drawable/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
        
    <Button
        android:text="Click Me"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>
</FrameLayout>
View Code

 

二、LinearLayout

目的:LinearLayout是一种显示子视图为单一行或单一列的布局容器。视图元素根据垂直(vertical)或水平(horizontal)的排列顺序线性排列。

布局:可以通过`android:orientation`属性设置为水平(`horizontal`)或者垂直(`vertical`),比如设置为竖直排列:android:orientation="vertical"。并可以通过`android:layout_weight`属性分配子视图的空间。关于layout_weight的详细说明可以看这一篇博客:https://www.cnblogs.com/czwlinux/p/17002459.html

性能:当管理大量视图时,LinearLayout可能会产生更多的计算工作,因为它需要处理权重和尺寸测量。

应用场景:适用于一系列标准水平或垂直排列的界面元素,比如表格、表单或工具栏。如下用LinearLayout实现一个水平排列的一组按钮

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
        android:text="Button 1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="Button 2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
View Code

 

三、RelativeLayout

目的:RelativeLayout 允许子视图相对于彼此或者父容器的某个位置进行定位。你可以指定一个视图位于另一个视图的左侧、右侧、上方或下方,或者相对于父容器的边界对齐等。

布局:在一个 `RelativeLayout` 中,子视图的位置可以通过属性如 `android:layout_toRightOf`、`android:layout_toLeftOf`、`android:layout_above`、`android:layout_below`、`android:layout_alignParentTop` 等来定义。此外,还可以使用 `android:layout_centerInParent`、`android:layout_centerHorizontal`、`android:layout_centerVertical` 等属性将子视图居中。

性能:RelativeLayout`可以非常灵活地布局,但如果层级过深或视图嵌套过多,则可能影响性能,因为布局的测量和放置可能会涉及到多次的遍历和计算。

应用场景:当需要基于其他视图位置关系来定位视图时,RelativeLayout是不错的选择。例如,当你想让一个按钮位于屏幕底部中间,并且另一个视图位于该按钮的上方时,RelativeLayout 就非常有用。

 

四、ConstraintLayout

描述:是一种较新的布局类型,在 Android 开发中被广泛使用,它在灵活性和性能上提供了很好的平衡。

布局:ConstraintLayout和RelativeLayout类似,允许开发者通过使用约束来定义视图之间的关系,而不是使用固定的位置。也有类似LinearLayout的weight的设计

说明:具体会后续单独写一篇专门讲该容器

 

四、其他的布局容器

1、GridLayout

 

标签:layout,视图,FrameLayout,RelativeLayout,android,LinearLayout
From: https://www.cnblogs.com/czwlinux/p/18011113

相关文章

  • Android发布,全志T507四核[email protected]工业平台,含税仅168元起!
    近年来,Android系统在工业自动化、仪器仪表、医疗、安防等工业领域的使用日趋广泛。为了满足广大工业用户的需求,创龙科技针对全志T507-H工业平台进行了Android系统适配。 创龙科技T507-H工业核心板SOM-TLT507性价比很高,四核[email protected]架构,国产化率100%(提供赛宝实验室认证......
  • Android Studio 中使用uiautomatorviewer插件
    在Android设备中,各种的组件如何分布以及控件的具体信息如何查看呢。在AndroidStudio中有一个可以查看的插件,本篇文章就介绍这个插件的使用- uiautomatorviewer.bat1.综述  AndroidStudio是Google官方提供的一款用于开发Android应用程序的集成开发环境(IDE),它基于IntelliJIDEA......
  • Android Studio导入机智云SDK
    1Newproject 修改build.gradlebuildscript{repositories{jcenter()google()}dependencies{classpath'com.android.tools.build:gradle:3.5.2'//NOTE:Donotplaceyourapplicationdependenciesher......
  • Unity打包Android报错:Target Android SDK not installed Android SDK does not includ
    1.需要查看当前unity版本中安装的SDKVersion2.找到对应路径下的文件,打开build-tools文件,其中就是对应的SDKVersion4.修改Unity中对应的配置 ......
  • 如何消除原生Android网络状态上的惊叹号
    喜欢使用原生Android系统的朋友可能会发现自己的状态栏信号图标上经常有一个惊叹号标志。这是怎么回事呢?原因是Android为了对网络状态进行检测,采用了一种叫做captivedetection的方式进行网络状态检测。其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Androi......
  • Android Handler使用方法
    目录: 1.前言本篇文章介绍AndroidHandler的基本使用方法,且Demo会以Java&Kotlin两种代码形式进行展示。在Android实际开发中,我们经常会遇到耗时任务,比如:网络请求API接口来获取数据、数据库CRUD操作等等,我们需要额外创建开启工作线程来处理这些耗时任务。由于A......
  • 2024最新Android设备UUID/UDID使用指南
    摘要本篇博客主要介绍了Android设备的唯一标识符(UUID和UDID)的使用教程。在Android平台上获取设备ID一直是开发者面临的难题,因为缺乏稳定的API来获取设备ID。本文将介绍几种获取设备ID的方法,并分析它们的优缺点。引言UDID和UUID是Android设备的唯一标识符,用于标识不同设备或不同......
  • Android Graphics 显示系统 - 如何模拟多(物理)显示屏?
    “ 本着花小钱办大事,不花钱也办事的原则,为了避免花钱买设备,那如何更便捷地学习/测试Android多屏显示的内容呢?本文就给大家介绍一种模拟Android多个物理屏幕显示的方法。” 01—AndroidEmulator旧方式的缺憾 早前的文章中,曾经介绍了使用AndroidEmulator模拟多......
  • 【APP逆向11】Android基础
    1.发送网络请求基于okhttp3表单格式newThread(){@Overridepublicvoidrun(){OkHttpClientclient=newOkHttpClient();//user=xwl&age=99&size18FormBodyform=newFormBody.Builder().add(&qu......
  • 安卓开发1——安装Android studio
    去网上找Android的studio1的下载教程找到对应的下载链接,下载 因为我有安装完成后就把下载的软件安装的文件删除的习惯所以就不展示了具体的安装教程可以看AndroidStudio安装配置教程-Windows(详细版)-CSDN博客 安装后新建项目完成后在最右侧的第三个可以挑选自己安卓......