Android布局中layout_width与width等属性的区别及单位使用疑问
Android布局:layout_前缀属性与常规属性的区别及单位说明
一、layout_(property)与(property)的核心区别
- 作用对象与控制权不同
- 带
layout_前缀的属性(如layout_width、layout_gravity)是当前View向父布局传递的布局规则,由父布局负责解析并决定如何给View分配空间、摆放位置。比如layout_weight是告诉LinearLayout当前View在剩余空间中的占比。 - 不带前缀的属性(如
width、background)是View自身的固有属性,控制View自身的内容或外观,由View自己解析生效。比如View的width是其内容区域的原始尺寸,但多数情况下会被父布局通过layout_属性分配的空间覆盖。
- 带
- 生效范围依赖不同
layout_属性的生效完全依赖父布局类型,比如layout_centerInParent只在RelativeLayout中有效,换到LinearLayout里就会被忽略。- 无前缀属性不受父布局影响,只要View自身支持该属性就会生效,比如所有View都能识别
visibility属性。
二、关于单位的疑问
- 常规
width、height默认单位确实是像素(px),但实际开发中几乎不会直接使用,因为px无法适配不同像素密度的设备,容易出现布局错位。 - 带
layout_前缀的属性支持使用px单位,比如写layout_width="50px"是合法的,系统会正常解析。但同样不推荐优先使用px,更建议用dp(适配屏幕密度)、sp(适配文字大小及系统缩放)这类适配性更好的单位;只有在需要精确像素级对齐的特殊场景下,才考虑使用px。
内容的提问来源于stack exchange,提问作者JunJaBoy
相关产品推荐
相关产品推荐

