Android中的Layout_weight(权重)详解

Android布局权重(layout_weight)的用法解析 布局权重是Android开发中常用的一种布局属性,通过设置权重值,我们可以实现子视图在父容器中按比例分配可用空间的效果。通过权重属性,我们可以根据子视图的权重比例来计算它们的相对大小,并实现各种布局需求。Android开发中,布局权重(layout_weight)是一种常用的布局属性,用于在布局中指定子视图的相对大小比例。这是因为布局权重属性是通过动态计算子视图的大小来实现的,而非固定的像素值。布局权重属性的应用场景非常广泛,特别适用于需要在布局中实现比例分配的场景。布局权重属性的使用方式。 阅读详情
以前一直没弄懂Layout_weight是什么意思,自己写代码测试也出来了不同的情况,最近看了一篇帖子感觉分析的很好,转贴出来学习下。
布局文件是:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="horizontal"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent"
  6.     >
  7. <Button
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:layout_weight="1"
  11. android:text="Button1"
  12. />
  13. <Button
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:layout_weight="2"
  17. android:text="Button2"
  18. />
  19. </LinearLayout>
复制代码
出现的布局是:button1占了2/3,button2占了1/3。



但是如果将布局文件中的button的属性android:layout_width="fill_parent"改为android:layout_width="wrap_content"那么出现的结果为:button1占了1/3,button2占了2/3。



出现这样的结局是什么意思呢?下面是人家的详解:转载过来:

*******转载的解释*********
linearLayout中包含有weight的child时,linearLayout会measure两次:
设屏幕宽度为X
第一次:button1的measuredWidth为X,button2也为X (因为用了weight,所以linearLayout每次measure child时不考虑前一个已经占用的大小),total_width为2X
第二次:计算delta=x-total_width=-x,然后会将button1的宽度设为
x+delta*1/3=0.66x, button2的宽度为 x+delta*2/3=0.33x
      那我现在对这句话重新概括一下:“因为设置了button1的权重最小,所以它占用的布局优先级就越高”,也许在Android里面布局并没有优先级之说,我这里只是为了说明问题,自己定义的,所以朋友们不要拍砖。
      那首先分析一下當layout_width屬性設置為fill_parent的時候,即充滿父佈局,當然意思是這個控件要根據weight的設置盡可能的大,因此,依上例而論,button1的weight設為1,button2的weight設置為2.即button的優先級最高,因此,要填充父佈局就要button1先來填充,盡可能的大,那這個盡可能又是多少呢,這就要綜合layout裡其他控件的weight值了,然後做一下運算,button1佔據2/3,button2佔據1/3.你也可以把button2設置為一個非常大的數,比如2000,此時在Graphical Layout模式下可以看到button1填充滿了整個寬度,而看不到button2的影子,事實上button2還是存在的,你把鼠標指向button1的後面就可以看到一個長長的豎條,那個就是button2,已經非常非常小了。因此,在layout_width設置為fill_parent的時候,weight所代表的是你的控件要優先盡可能的大。

     接著是當layout_weight設置為wrap_content的時候,即適應內容的寬度,意思是這個控件要盡可能的小,只要能把內容顯示出來就可以了,同樣的,如果把button1和button2的layout_weight設置為wrap_content後,button1的weight為1,button2的weight為2.那麼button1要優先盡可能的小,而button2也要盡可能的小,只是優先級不一樣,因為設置了weight,所以這兩個控件總的寬度要填滿父佈局的寬度,所以就又要計算每個控件所佔據的大小,此時,button1的優先級較高,共有兩份,一份1/3,一份2/3,button1要盡可能的小,那button1當然要選1/3,因此,我們看到的效果反而是button2佔據的較大。這裡要說的是如果把權值同樣做如下設置:button1為1,button2為2000,那button1是不是就要佔據1/2000的空間呢?這麼理解就錯了,剛才說了,要盡可能的小,但這個小是有一個限度的,那就是wrap_content,就是還要是內容完完整整的顯示出來,同樣的,盡可能的大也是有一個限度的,那就是父佈局的寬度。因此,在layout_width設置為wrap_content的時候,weight所代表的是你的控件要優先盡可能的大。
所以,要對weight做了解,要深深的理解下面兩句話:
在layout_width設置為fill_parent的時候,layout_weight所代表的是你的控件要優先盡可能的大,但這個大是有限度的,即fill_parent.
在layout_width設置為wrap_content的時候,layout_weight所代表的是你的控件要優先盡可能的小,但這個小是有限度的,即wrap_content.
layout_height 同 layout_width.

 

 

 

 

主::类中设置权重方法:

 setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
LayoutParams.WRAP_CONTENT, 1));


 

SAP采购申请详述;以及采购计划协议/交货计划行 阅读详情

相关推荐

Innovus时钟树综合CTS实战:从原理到signoff的完整指南

时钟树综合(CTS)是数字后端实现中保障同步电路时序收敛的核心环节,其本质是在物理层面构建低偏斜、可控延迟的全局时钟分发网络。它基于静态时序分析(STA)原理,通过平衡clock skew、insertion delay、transition time与功耗面积等多维约束,对抗工艺电压温度(PVT)变异带来的时序不确定性。技术价值在于支撑GHz级高频芯片的setup/hold签核,广泛应用于CPU、GPU、AI加速器等复杂SoC的Innovus后端流程。本文聚焦CTS在Innovus工具链中的工程落地,覆盖

weixin_28523493的博客 223

Android 布局 Layout_weight 详解

一直很少用Layout_weight,更别说弄懂它是什么意思;但是Layout_weight肯定是不得不用到的,自己写代码测试也出来了不同的情况,最近看了一篇帖子感觉分析的很好,转贴出来学习下——知道怎么用了之后,发现Layout_weight真的很好用啊! 布局文件是: <LinearLayout xmlns:android="http://schemas.android.com/apk/

Claude Zhong 1148

STM32+CubeMX实战:5步搞定LWIP HTTP服务器搭建(附常见编译错误解决)

本文详细介绍了基于STM32和CubeMX平台,快速搭建LWIP HTTP服务器的5步实战指南。内容涵盖从项目初始化、LWIP深度配置到解决经典的`HTTPD_FSDATA_FILE`编译错误,并分享了使用VSCode进行高效开发的工作流,旨在帮助嵌入式开发者快速实现网络功能并规避常见陷阱。

weixin_29192365的博客 573

Android:Layout_weight的深刻理解

最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出来和大家分享。 首先看一下Layout_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置他的权重。很多人不知道剩余空间是个什么概念,下面我先来说说剩余空间。 看下面代码:

lwwgtm的专栏 2002

农经权二轮延包—地块示意图生成

本文介绍了地块示意图制作软件的使用方法及模板制作要点。软件通过设置六个参数(示意图模板、属性数据、地块DBF、导航图、地块图片及存放位置)自动生成Word文档,并可导出PDF。文章详细说明了5页Word模板的制作过程,包括页脚三栏设置和页码插入技巧,支持每户最多28个地块的情况。同时指出该软件生成的图片分辨率(300dpi)满足清晰度要求,并提及软件免费提供插件但收费提供后续服务。

weixin_47364423的博客 1115

块坐标下降法实战:如何用Python一步步优化无人机通信网络?

本文通过Python实战案例,详细介绍了块坐标下降法在优化无人机通信网络中的应用。文章以最大化网络吞吐量为目标,将复杂的非凸问题拆解为功率分配和轨迹规划两个子问题,并提供了完整的算法实现、代码示例及调参指南,为机器学习工程师解决类似优化问题提供了实用参考。

sat99的博客 975

Android系列之一:android:layout_weight和android:weightSum总结

android:layout_weight是LinearLayout布局的一个属性,它定义了每个控件占据屏幕剩余空间的权重。以划分屏幕横向空间为例:每个控件利用android:layout_width来定义自身的宽度,Android首先将所有控件定义的宽度相加称之为已用屏幕宽度,整个屏幕的宽度减去已用屏幕宽度就得到剩余空间,如果已用屏幕宽度已经超过屏幕总宽度,那么剩余空间就是负的

兰君 1917

Plant Simulation与ABB机器人虚实结合

Plant Simulation与ABB机器人虚实结合

santayana的专栏 1869

android:layout_weight

这个参数很有意思,网上有些中文资料写的完全不正确,可偏偏很多地方还在转载。 其实这个参数就是个比重大小调整的参数,数值越大,比重越大。(不像网上疯传的那个文章里写的数值越大,比重越小)。 但是当你在调整参数的时候注意,要把view的height或者width设置为0p

乐天的专栏 428

Google 二次签名 导致 Facebook , Google 登录失败

google 授权登录

xq610928的博客 1957

开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了稳压电源的基础知识与应用实验。首先阐述了稳压电源的定义与类型,包括线性稳压电源(如LM7805/7905)和开关稳压电源(降压/升压/升降压式)的工作原理、参数特点及优劣势。随后详细讲解了各类稳压电源的实验设计,如线性稳压电源的电路实现、开关稳压电源的PWM控制方法等。最后汇总了硬件工程师相关的笔试面试资源,涵盖器件知识、电路仿真、企业真题等内容。全文结合理论分析与Multisim仿真,为电子工程学习者提供了稳压电源的实用技术参考。

XU157303764的博客 1640

android开发笔记之权重(layout_weight)

我相信大家在布局文件中都用过权重(layout_weight)吧,当然这只有在线性布局(Linearlayout)中才有的,可是很多人也许都只是简单的理解为比。其实权重就是: 把屏幕剩余空间按比例分配大家先记住这句话,这里就来深入理解下权重,这里以水平排列为例(即宽度的权重),懂了水平的,竖直排列的(即高度的权重)自然同理。①第一种情况(宽度为wrap_content):a.<LinearLayo

minigeek的博客 6556

06 - 深度学习处理器原理

深度学习处理器的重要性在于它们可以加速深度学习任务的执行,从而推动了人工智能的发展。传统的通用处理器虽然可以执行深度学习任务,但它们不够高效,需要消耗大量的能量和时间。深度学习处理器通过硬件加速和特定设计来优化深度学习任务的执行,从而可以提高执行效率、降低能耗和加速训练和推断过程。 深度学习处理器的发展也推动了深度学习算法的创新,因为算法的发展需要硬件的支持和驱动。同时,深度学习处理器的出现也促进了更广泛的应用场景,包括自动驾驶、人脸识别、语音识别、图像识别等领域。因此,深度学习处理器的重要性不仅在于加速

m0_51339444的博客 752

android:layout_weight权重分析

android里面的权重layout_weight属性原理剖析

骑猪追大象 4602

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android:layout_weight="1",Android中的Layout_weight(权重)详解

以前一直没弄懂Layout_weight是什么意思,自己写代码测试也出来了不同的情况,最近看了一篇帖子感觉分析的很好,转贴出来学习下。布局文件是:出现的布局是:button1占了2/3,button2占了1/3。但是如果将布局文件中的button的属性android:layout_width="fill_parent"改为android:layout_width="wrap_content"那么出...

weixin_33445930的博客 2782

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android中你也许不知道的线性布局Layout_weight属性权重比例分配原理

也许你正在使用这个属性Layout_weight权重,没错就是它,很多人问这有什么可讲的,不就是按照那样用吗?其实任何一东西的存在都有其原因。仔细研究你会有不同的感受,当然,肯定也会有很多大神知道,小菜鸟就班门弄斧了,但是对于Android初学者来说,你不妨看看,废话不多说,直接上...       权重Layout_weight是Android中线性布局特有的属性,有时候我们为了让排在一行的控

Mikyou的专栏 6921

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android 中权重layout_weight

Android 中权重layout_weight 所谓的权重是按比例分配屏幕吗? if(wrap_content){       那么权重越大,所占空间越大,小小不过wrap_content } if(match_parent){       那么权重越大,所占空间越小,大大不过match_parent } 所以权重不是按比例分配屏幕 权重:将屏幕剩余空间按一定比例分配给空间

周天祥的博客 9万+

剖析Android 线性布局中的权重(layout_weight)

http://bbs.itcast.cn/thread-32205-1-1.html 什么是权重(layout_weight) 通俗地讲,权重(layout_weight)就是对线性布局指定方向(水平或垂直)上剩余空间分配的一个规则。 案例分析 为了便于大家更好地理解权重(layout_weight),接下来,通过几个案例来分析如何使用权重(layout_weigh

jacky choise 1660

android:layout_weight权重的真实含义

首先声明只有在Linearlayout中,该属性才有效。之所以Android:layout_weight会引起争议,是因为在设置该属性的同时,设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果。如下所示: [html] view plain copy  print? Linear

cxq_leelen的博客 570

Android之权重layout_weight的真正用法

layout_weigh——权重总的来说就是屏幕的剩余空间按比例分配 首先声明只有在Linearlayout中,该属性才有效。之所以android:layout_weight会引起争议,是因为在设置该属性的同时,设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果。LinearLayout为水平的时候和垂直都是一样的效果,现在讨

重心开始,重新开始 1万+

剖析Android 线性布局中的权重(layout_weight)(解答疑惑)

http://blog.youkuaiyun.com/zhoujn90/article/details/45055863 首先看一下奇怪的的现象: 线性布局的情况下,有个非常奇怪的属性——Android:layout_weight,该属性大部分视图控件中都有,它表示视图的重要度或者权重,看看以下两种情况下该属性的使用: (1)水平布局的情况下:(android:orien

u010477502的专栏 946

透析Android 中 权重使用及分配规则(layout_weight)

平常我们在使用线性布局LinearLayout的时候,会用到权重layout_weight,将控件的宽度(或高度)设为0,再设置它的权重即可,控件呈现呈现出的大小与权重比例相吻合。方法简单,自是没有什么好说的,可是你们有想过将控件的宽和高全部设置,再去设置权重,这个呈现出的比例是怎样?权重的分配规则又是如何? 下面通过几个例子来了解一下:权重(layout_weight):即为当前线性布局指定方向(

lemonGuo的大脑皮层、小脑、海马体、杏仁核..... 1万+

android:layout_weight 设置控件的权重 ,子控件所占比例(公式如下)

android:layout_weight 设置控件的权重 ,子控件所占比例(公式如下)

North_Start的博客 1496

Android:深度探究线性布局LinearLayout中权重(layout_weight)属性

在LinearLayout布局中,子控件对于父布局的分割显得尤为重要,在不考虑适配的情况,我们可以设置具体的高度和长度来分配。但这样对于不同尺寸的设备要分别进行绘测,另一方面这样做代码的可复用性也是相当低的 所以,今天我们要介绍的是LiearLayout中的layout_weight属性,通过设置它可以按权重分割父布局(LinearLayout) 在讲解之前,提前说明一个使用规则,即在垂直排列的LinearLayout中,我们优先考虑子控件layout_height属性与layout_weight的搭配

dualvencsdn的博客 2368
上一篇: Dom to String(将xml文件转化为String)
下一篇: Android开发必备的21个免费资源和工具
xing...
博客等级 码龄17年 30粉丝 23原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值