详细学习线性布局(2)

【Android】XML布局:线性布局LinearLayout、相对布局RelativeLayout、网格布局GridLayout、滚动视图 ScrollView LinearLayout,相对布局RelativeLayout,网格布局GridLayout,滚动视图 ScrollView 阅读详情

父容器与本容器属性 :

android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器都有一个LayoutParams内部类,

android:... 是父容器用来控制子组件的属性. 如android:layout_gravity 是控制组件本身的对齐方式, android:gravity是控制本容器子组件的对齐方式;

布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 绝对布局 帧布局 网格布局 相对布局 线性布局是直接继承ViewGroup,表格布局是继承的LinearLayout;

一. 线性布局(LinearLayout)

 

1. 线性布局作用 

 

作用 : 线性布局会将容器中的组件一个一个排列起来, LinearLayout可以控制组件 横向 或者 纵向 排列, 通过android:orientation属性控制;

不换行属性 : 线性布局中的组件不会自动换行, 如果组件一个一个排列到尽头之后, 剩下的组件就不会显示出来;

 

2. LinearLayout常用属性

 

(1)基线对齐

 

xml属性 : android:baselineAligned; 

设置方法 : setBaselineAligned(boolean b); 

作用 : 如果该属性为false, 就会阻止该布局管理器与其子元素的基线对齐;

 

(2)设分隔条 

 

xml属性 : android:divider; 

设置方法 : setDividerDrawable(Drawable); 

作用 : 设置垂直布局时两个按钮之间的分隔条;

 

(3)对齐方式(控制内部子元素)  

 

xml属性 : android:gravity; 

设置方法 : setGravity(int); 

作用 : 设置布局管理器内组件(子元素)的对齐方式, 

支持的属性 : 

top, bottom, left, right, 

center_vertical(垂直方向居中), center_horizontal(水平方向居中),

fill_vertical(垂直方向拉伸), fill_horizontal(水平方向拉伸), 

center, fill, 

clip_vertical, clip_horizontal; 

可以同时指定多种对齐方式 : 如 left|center_vertical 左侧垂直居中;

 

(4)权重最小尺寸 

 

xml属性 : android:measureWithLargestChild; 

设置方法 : setMeasureWithLargestChildEnable(boolean b);

作用 : 该属性为true的时候, 所有带权重的子元素都会具有最大子元素的最小尺寸;

 

(5) 排列方式

 

xml属性 : android:orientation;

设置方法 : setOrientation(int i);

作用 : 设置布局管理器内组件排列方式, 设置为horizontal(水平),vertical(垂直), 默认为垂直排列;

 

3. LinearLayout子元素控制

 

LinearLayout的子元素, 即LinearLayout中的组件, 都受到LinearLayout.LayoutParams控制, 因此LinearLayout包含的子元素可以执行下面的属性.

 

(1) 对齐方式

 

xml属性 : android:layout_gravity;

作用 : 指定该元素在LinearLayout(父容器)的对齐方式, 也就是该组件本身的对齐方式, 注意要与android:gravity区分, ;

 

(2) 所占权重

 

xml属性 : android:layout_weight;

作用 : 指定该元素在LinearLayout(父容器)中所占的权重, 例如都是1的情况下, 那个方向(LinearLayout的orientation方向)长度都是一样的;

 

4. 控制子元素排列 与 在父元素中排列

 

控制本身元素属性与子元素属性 : 

设备组件本身属性 : 带layout的属性是设置本身组件属性, 例如 android:layout_gravity设置的是本身的对其方式; 

设置子元素属性 : 不带layout的属性是设置其所包含的子元素, 例如android:gravity 设置的是该容器子组件的对齐方式;

LayoutParams属性 : 所有的布局管理器都提供了相应的LayoutParams内部类, 这些内部类用于控制该布局本身, 如 对齐方式 layout_gravity, 所占权重 layout_weight, 这些属性用于设置本元素在父容器中的对齐方式;

容器属性 : 在android:后面没有layout的属性基本都是容器属性, android:gravity作用是指定指定本元素包含的子元素的对齐方式, 只有容器才支持这个属性;

 

5. 常见用法

 

(1) 获取LinearLayout的宽高

 

a. 组件外无法获取组件宽高 

下面的两种情况都是针对 View.getHeight() 和 View.getWidth() 方法 : 

组件外无法获取 : 调用View.getHeight() 和View.getWidth()方法 是获取不到组件的宽度和高度的, 这两个方法返回的是0, Android的运行机制决定了无法在组件外部使用getHeight()和getWidth()方法获取宽度和高度;

组件内可以获取 : 在自定义的类中可以在View的类中通过调用这两个方法获取该View子类组件的宽和高;

 

b. 组件外部获取View对象宽高方法 

 

外部获取 : 使用View.getMeasuredWidth() 和View.getMeasuredHeight()方法可以获取组件的宽和高, 在调用这个方法之前, 必须先调用View.measure()方法, 才可以, 否则也获取不到组件的宽高;

注意(特例) : 如果组件宽度或高度设置为 fill_parent, 使用 getMeasuredHeight() 等方法获取宽度和高度的时候, 并且组件中含有子元素时, 所获取的实际值是这些组件所占的最小宽度和最小高度.(没看懂)

 

示例:

 

  1. View view = getLayoutInflater().inflate(R.layout.main, null);  
  2. LinearLayout layout = (LinearLayout) view.findViewById(R.id.linearlayout);  
  3. //调用测量方法, 调用了该方法之后才能通过getMeasuredHeight()等方法获取宽高  
  4. layout.measure(0, 0);  
  5. //获取宽度  
  6. int width = layout.getMeasuredWidth();  
  7. //获取高度  
  8. int height = layout.getMeasuredHeight();  

 

 

c. 获取布局文件中组件的宽高 

 

从LayoutParams中获取 : 调用View.getLayoutParams().width 和 View.getLayoutParams().height 获取宽高, 如果宽高被设定为 fill_parent, match_parent, warp_content 时, 这两个两边直接回返回 FILL_PARENT, MATCH_PARENT, WARP_CONTENT常量值;

规律 : 从View.getLayoutParams()中获取 width, height 值, 在布局xml文件中设置的是什么, 获取的时候就得到的是什么;

 

(2) 在LinearLayout中添加分隔线

 

a. 使用ImageView添加(低版本3.0以下)

 

垂直布局 横向宽度填满 : 如果布局是vertical, 那么设置一个ImageView宽度fill_parent, 高度2dp, 设置一个背景色;

水平布局 纵向高度填满 : 如果布局时horizontal, 那么设置一个ImageView宽度2dp, 高度fill_parent, 设置一个背景色;

  1. <ImageView   
  2.     android:layout_width="fill_parent"  
  3.     android:layout_height="2dp"  
  4.     android:background="#F00"/>  

 

b. 使用xml属性添加(3.0以上版本)

 

设置LinearLayout标签的 android:showDividers属性, 该属性有四个值 : 

none :不显示分隔线;

beginning : 在LinearLayout开始处显示分隔线;

middle : 在LinearLayout中每两个组件之间显示分隔线;

end : 在LinearLayout结尾处显示分隔线;

 

设置android:divider属性, 这个属性的值是一个Drawable的id;

 

c. 使用代码添加(3.0以上版本)

 

设置显示分隔线样式 : linearLayout.setShowDividers(), 设置android:showDividers属性;

设置分隔线图片 : linearLayout.setDividerDrawable(), 设置android:divider属性;


【鸿蒙开发实战篇】详细介绍ArkUI中线性布局,层叠布局和弹性布局 三个布局组件讲完了,篇幅还是蛮大的,其实看过鸿蒙开发者官方文档的人应该也都发现了,本篇文章知识点的讲解顺序就是按照官方文档来的,看了每个知识点,然后分别手写下对应的demo和自己的理解,后面其他布局组件都也会以这种方式讲解,枯燥是枯燥了点,但相比于仅仅是看文档来说,这才是最有效的掌握知识点的方法。 阅读详情

相关推荐

安卓学习笔记08:常用布局 - 线性布局

安卓界面元素、安卓常用布局、线性布局

howard2005的专栏 3845

【Android】线性布局(LinearLayout)最全解析

【Android】线性布局(LinearLayout)最全解析一、LinearLayout概述二、LinearLayout常用属性2.1 orientation属性2.2 gravity属性2.3 layout_weight属性 一、LinearLayout概述 线性布局(LinearLayout)主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能方一个控件。 使用线性布局,需要将布局节点改成LinearL

lucashu的博客 6万+

安卓案例:线性布局嵌套

本教程通过实例详细解析了Android中线性布局(LinearLayout)的使用方法与核心属性,强调其在界面设计中的重要作用。首先简述了线性布局的特点,即支持子视图垂直或水平排列,并能够通过权重进行空间分割。接着以实际代码为例,逐步展示了如何在主布局文件中运用嵌套的线性布局实现多行多列的复杂布局效果,同时结合 gravity、weight 等属性调整组件位置与大小。最后布置课后作业,要求利用线性布局模拟网格布局样式,进一步巩固学习成果,旨在帮助开发者熟练掌握并灵活应用线性布局进行界面设计。

howard2005的专栏 1万+

Android 基础知识4-2.6LinearLayout(线性布局)

线性布局(LinearLayout)主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能方一个控件。使用线性布局,需要将布局节点改成LinearLayout,基本格式如下:......

yyxhzdm的博客 6177

安装keil5(MDK)及导入pack包教程

首先说明的是我安装的Keil版本为Keil V5.29.0.0 1、安装软件 右键管理员权限运行安装包 设置安装路径以及pack的存放路径 随意输入First Name和E-mail 安装驱动 完成软件安装,然后可以先关闭弹出的Pack Install(一会再添加) 2、激活一下软件 打开桌面的Keil File → License Management(我之前注册过了) 右...

hrx-@@ 10万+

LPDDR4协议规范之 (四)命令和时序

LPDDR4协议规范之 (四)命令和时序命令真值表激活操作读写访问操作读前沿和后沿突发读取操作流程读操作时序写前沿和后沿突发写操作写入均衡(待更新) 命令真值表 激活操作 ACTIVATE命令由两个连续命令组成,Activate-1命令和Activate-2。通过在(Activate-1)时钟的第一个上升沿保持CS HIGH,CA0 HIGH和CA1 LOW来发出Activate-1命令,通过...

YJFeiii的博客 2万+

【Android】——LinearLayout布局

线性布局(LinearLayout)???——》整个Android布局中的控件摆放方式是以线性的方式摆放的;   属性解析???——》 LinearLayout分类???——》 水平线性布局???——》android:orientation="horizontal" 垂直线性布局???——》android:orientation="vertical" ...

YHJ 4851

Xilinx系FPGA学习笔记(三)Vivado的仿真及ILA使用

接着学习vivado的使用方法。

贾saisai的博客 2545

LinearLayout(线性布局)

本节开始讲Android中的布局,Android中有六大布局,分别是: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局) FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局) 而今天我们要讲解的就是第一个布局,LinearLayout(线性布局),我们屏幕适配的使用 用的比较多...

木晓的博客 2224

【异常】Cursor编辑器 “Taking longer than expected...“ 报错全链路排查与解决方案

该提示并非传统的程序崩溃或语法报错,本质是Cursor编辑器的超时预警机制——当核心任务(云端AI推理请求、本地项目索引等)的执行耗时超出系统预设阈值时,触发的用户告知类提示,核心诱因是任务执行全链路出现阻塞或性能瓶颈。以下方案按排查优先级从高到低排序,覆盖从快速急救到根因根治的全流程,可按步骤逐步验证解决。针对大仓库、多依赖项目的索引超时问题,核心是通过规则过滤无效文件,从根源降低索引负载。

奶爸的编程之路,也就一周冷个三天 3099

YOLO11数据增强中的色彩空间变换:HSV、YUV等增强技术的原理、实现与参数调优全解析

摘要 本文介绍了色彩空间的基本概念及其在数据增强中的应用,重点分析了HSV色彩空间的原理与特性。色彩空间作为颜色表示的数学模型,在计算机视觉中具有重要作用,RGB、HSV、YUV等常用色彩空间各有特点。数据增强中的色彩变换能提升模型鲁棒性、缓解数据不平衡并防止过拟合。HSV色彩空间将颜色分为色调(H)、饱和度(S)和明度(V)三个独立分量,更符合人类视觉感知,便于针对性调整图像属性。文章详细阐述了HSV与RGB的转换公式,为YOLO11等目标检测框架的数据增强提供了理论基础。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 286

Android 线性布局

线性布局(LinearLayout)是一种比较常用且简单的布局方式。在这种布局中,所有的子元素都是按照垂直或水平的顺序排列在界面上。如果是垂直排列,每个子元素占一行,如果是水平排列,则每个子元素占一列。线性布局可以支持布局样式嵌套实现复杂的布局样式。

m0_62786921的博客 5931

EUV光源技术路线深度解析

EUV光刻技术的关键瓶颈在于13.5纳米光源的稳定高效获取。主流技术路线从DPP放电等离子体发展为LPP激光等离子体方案,后者通过激光轰击锡液滴实现更高功率输出。新出现的LDP技术综合激光预热与放电优势,虽功率扩展性有限,但为光源技术提供了有益补充。目前LPP仍是唯一通过量产验证的方案,而LDP可能作为过渡技术应用于特定场景。EUV光源的发展实质是能量转化效率与系统可靠性的持续优化过程,各种技术路线的探索共同推动着这一核心工艺的进步。

硬核科技 555

Android studio 线性布局

线性布局

qq_65584142的博客 4458

081、空间降噪(Spatial Denoise)实战:双边滤波、非局部均值与BM3D在ISP中的调优

调参时,别只看PSNR/SSIM。找几个典型场景(夜景、人像、文字、天空),在真实设备上肉眼对比。我见过PSNR涨了2dB但图像看起来更差的案例——因为PSNR不惩罚纹理丢失。空间降噪这块,理论说再多,不如动手调一次。下次遇到噪点问题,先别急着上BM3D,试试双边滤波的自适应参数,说不定有惊喜。

zzfmlxs的博客 42

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android:xml布局详细介绍(线性布局:LinearLayout\相对布局:RelativeLayout\ 条件布局:ConstraintLayout)

xml布局详细介绍xml布局详细介绍1、线性布局 LinearLayout4、 XML布局的常见属性参考 xml布局详细介绍 Android推荐使用XML布局文件来定义用户界面,而不是使用Java代码来开发用户界面,因此基础所有组件都提供了两种方式来控制组件的行为:1、在XML布局文件中通过XML属性进行控制;2、在Java程序代码中通过调用方法进行控制;完全使用Java代码来控制UI界面不仅繁琐、而且不利于解耦;而完全利用XML布局文件来控制UI界面虽然方便、便捷,但难免有失灵活。 在编译XML布局文件时

JMW1407的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android的约束布局,表格布局及线性布局(对学习帮助不大,非详细解说)

Android的约束布局,表格布局及线性布局 一、约束布局(ConstraintLayout)的创建及使用,及个人的相关实验说明 有关于此布局的创建和使用,推荐看一看ConstraintLayout的创建和使用。 看完之后开始拖拽Textview组件进入布局,输入每个组件的内容,然后调整背景颜色,成品如图: 每一个组件调整位置,建议使用右边的Attributes工具栏中的: 笔者在这里不一一举例,创建了布局之后可以慢慢调整慢慢体会这个布局。 布局调整完毕之后,代码如下(代码会在调整过程中自动生成)

Impermanent的博客 1514

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

AndroidStudio3.1 线性布局

- 了解界面与布局 - 掌握线性布局 - 理解线性布局嵌套

qq_62972842的博客 2955

android布局之线性布局

LinearLayout 线性布局有两种,分别是水平线性布局和垂直线性布局,LinearLayout属性中android:orientation为设置线性布局当其="vertical"时,为 垂直线性布局,当其="horizontal"时,为水平线性布局,不管是水平还是垂直线性布局一行(列)只能放置一个控件。 下面我们举例说明: 垂直线性布局 <LinearLayout xmlns:and

3万+

2.2线性布局

将约束布局改为线性布局,删掉默认的标签 添加两个按钮 3、字符串资源文件 4、预览效果 查看效果,发现两个按钮水平摆放,在窗口左上角 5、设置布局属性,查看效果 (1)设置线性布局方向 orientation属性 gravity (left、center、right、top、bottom可以搭配形成很多种对齐方式) 例如:居中 还可以设置联合对齐方式(如:gravity:“center|top” :上中) 设置背景颜色 设置背景图片1、在drawable里添加图片 2、在布局资源中写入代

liqunboy的博客 634

Android基础学习笔记8:常用布局 - 线性布局

Android基础学习笔记8:常用布局 - 线性布局

m0_63691734的博客 2709

【HarmonyOS 学习】布局-线性,层叠

FlexAlign.SpaceEvenly: 垂直方向均匀分配元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样。FlexAlign.SpaceEvenly: 水平方向均匀分配元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样。FlexAlign.Start: 元素在水平方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。FlexAlign.Start:元素在垂直方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

hengxiaoheng531的博客 980

Android Studio:线性布局

安卓学习:线性布局

m0_62491877的博客 2190

Android:线性布局介绍,线性布局weight属性,线性布局微调参数gravity,线性布局divider

LinearLayout:线性布局 一、线性布局介绍 新建一个工程 然后我们默认的布局,是相对布局, 相对布局的意思是我的控件可以在里面随意放置 那如果把这个RelativeLayout 改了呢? 不用这相对布局,而是用线性布局, 我们把代码都删掉 然后直接把 RelativeLayout 改成LinearLayout 现在我这个布局已经好了 我们再往里面添加东西,发现只能在一条横线上添加 如果一个我一个横线...

m0_57089315的博客 2767
上一篇: 详细学习线性布局(1)
下一篇: 在使用startActivityForResult时需要注意的问题
下沉的代码
博客等级 码龄12年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值