博客
关于我
layout_weight 的解释及使用
阅读量:793 次
发布时间:2023-01-30

本文共 1222 字,大约阅读时间需要 4 分钟。

layout_weight 的解释及使用

在Android的控件布局中,layout_weight 属性确实是一个有一点特殊的设置属性。理解它的使用方式是许多开发者在开始Android开发时会遇到的一个问题。

为什么说是奇葩呢?

以下面的布局代码为例,假设有两个TextView控件:

  • TextView-888
  • TextView-999999

它们都是水平方向排列,layout_weight="1"。从这个布局你可以很容易地误认为,它们平分了整个LinearLayout控件的水平空间,也就是各自占据50%的宽度。然而,实际情况并非如此。

###pesan

更仔细地分析:

  • 这两个TextView控件的布局为layout_width="wrap_content",这意味着它们会根据内容自动调整宽度。
  • TextView-888有888个字符,而TextView-999999有999999个字符。显然,999999字符的宽度比888字符的宽度要大得多。

因此,在实际显示中:

  • TextView-999999的宽度加上它分配到的空闲一半空间会超过TextView-888的宽度加上它分配到的空闲一半空间。

意思是什么?

这就是layout_weight属性的“奇葩”之处。很多开发者误以为layout_weight是用来平分整个空间的,但实际上它只用来平分剩余的空闲空间。

所以,当使用layout_weight时,其效果并非直接将控件分配到整个空间中,而是根据比例分配剩余的空闲空间。只有在控件的宽度(或高度)设为0dp时,layout_weight才会起到真正的分割作用。这就意味着,对于水平布局,我们需要将元素的layout_width设为0dp,然后使用layout_weight来分配空间比例。

###示例

假设我们有一个水平布局,包含两个TextView控件:

在这个布局中,两个TextView控件将平分LinearLayout的总宽度。即每个控件将占据50%的空间。这种情况下,layout_weight="1"意味着每个控件都分配到同样的空闲空间,这正是layout_weight的真正作用。

###竖直布局的应用

类似的,layout_weight也可以在竖直布局中使用。例如,如果我们想要给两个TextView控件在垂直方向上平分空间,我们可以将它们的layout_height设为0dp,并将各自的layout_weight设为1。这样,它们将均等地分配LinearLayout的高度。

###总结

总之,layout_weight是一个非常有用的布局属性,但它并不是用来直接分割控件的空间,而是用来分配剩余空闲空间的比例。当将控件的尺寸设为0dp时,它们才会根据layout_weight的值来分割整个空间。如果不进行这样的设定,layout_weight的效果将大打折扣。

转载地址:http://idgyk.baihongyu.com/

你可能感兴趣的文章
leaflet实现wms服务面要素可点击(leaflet篇.30)
查看>>
leaflet实现反向匹配查询(ElasticSearch技术实现)(输入坐标查询距离最近的地址信息)(leaflet篇.49)
查看>>
leaflet实现四色预警(仿echarts气泡图)(leaflet篇.41)
查看>>
Leaflet快速入门与加载OSM显示地图
查看>>
leaflet态势标绘-细直线箭头采集(leaflet篇.83)
查看>>
leaflet接入geoserver发布的wms服务(leaflet篇.28)
查看>>
leaflet接入geoserver发布的热力图服务(leaflet篇.29)
查看>>
leaflet接入土地资源(leaflet篇.55)
查看>>
leaflet接入天地图(经纬度投影256)(leaflet篇.24)
查看>>
leaflet接入百度午夜蓝地图、深色地图(leaflet篇.27)
查看>>
leaflet接入百度地图服务时只有北半球的解决方案(leaflet篇.54)
查看>>
leaflet接入百度影像地图(leaflet篇.34)
查看>>
leaflet散点图(leaflet篇.13)
查看>>
leaflet暗色系地图样式地图(获取滤镜值)(leaflet篇.44)
查看>>
leaflet柱状图(leaflet篇.75)
查看>>
leaflet波纹点(leaflet篇.14)
查看>>
leaflet点采集与点编辑(leaflet篇.5)
查看>>
leaflet矩形空间查询(ElasticSearch技术实现)(leaflet篇.50)
查看>>
leaflet线周边空间查询(ElasticSearch技术实现)(leaflet篇.53)
查看>>
leaflet线采集与线编辑(leaflet篇.6)
查看>>