layout_constraintDimensionRatio中 H与W的区别

 

在 ConstraintLayout  约束布局中,  layout_constraintDimensionRatio 表示 期望的 宽高比 ,这方面 网上资料很多,但还有 一些 隐藏的用法 网上查不到。

 

layout_constraintDimensionRatio 不仅可以用来 表示  宽高比, 也可以用来 表示 高宽比

 

正常写法下 

 layout_constraintDimensionRatio="3:2" 时,表示 宽:高= 3:2

 

特殊写法 

layout_constraintDimensionRatio = “H, 3:2”, 

layout_constraintDimensionRatio = “W, 3:2”,


第一个字符, 代表 后面的  3:2   这个 比数 中 分母 是指高or宽。

例如H是"高"的意思,则表示这个分数中分母是高。在3:2这个比数中 分母2 是高,那么 分子3就 宽, 则 宽:高= 3:2
例如W是"宽"的意思,则表示这个分数中分母是宽。在3:2这个比数中 分母2 是宽,那么 分子3就是 高, 则 宽:高=2:3;

 

结论

一、在 android:layout_width = 固定dp 或 match_parent 、android:layout_height = 0dp 的情况下,表示 宽度固定,依照比例来计算高度,规则如下:

1、不写H,也不写W的情况下, 表示  宽高比

2、写了H 和 不写H 效果是一样的,都是 表示  宽高比

3、加了 “W,”  表示 倒置 分数的意义,  表示  高宽比, 看清楚,高在前,宽在后。别看岔了

------------

二、在 android:layout_width = 0dp 、android:layout_height = 固定dp 或 match_parent 的情况下,表示 高度固定,依照比例来计算宽度,规则如下:

1、不写H,也不写W的情况下, 表示  宽高比,宽在前,高在后。

2、写了W 和 不写W 效果是一样的,都是 表示  宽高比

3、加了 “H,”  表示 倒置 分数的意义,  表示  高宽比, 看清楚,高在前,宽在后。而高又是固定的值,别看岔了

 

<think>好的,用户想了解Android ConstraintLayout的所有属性及其用法。首先,我需要回忆ConstraintLayout的相关知识,并参考提供的引用内容。根据引用[3],ConstraintLayout是2016年推出的,用来减少布局层级,优化性能,并且已经成为Android Studio的默认布局。 接下来,用户需要属性列表和详解。根据引用[1]和[3],应该将属性分为布局约束、边距控制、尺寸控制、比例控制、链式布局、辅助组件等类别。每个类别下需要列出具体的属性,并给出示例代码,这样用户更容易理解。 例如,布局约束属性包括layout_constraintLeft_toLeftOf等,需要解释每个属性的作用,并注意命名空间是app:。然后,边距控制中的goneMargin属性可能用户不太熟悉,需要说明用途。尺寸控制中的wrap_content、0dp和固定值的区别也很重要,尤其是0dp表示匹配约束,这点容易出错。 比例控制中的水平和垂直比例,可能需要数学公式来解释,比如使用$$...$$格式。链式布局的样式如spread、spread_inside和packed,需要分别说明它们的不同效果。辅助组件如Guideline和Barrier,用户可能不熟悉如何使用,需要给出具体例子。 还需要检查是否有遗漏的属性,比如圆形定位或者百分比布局等。同时,要确保所有代码示例符合XML格式,属性使用正确的命名空间。最后,根据用户的要求生成相关问题,可能涉及性能优化、RelativeLayout区别、动态修改属性等,帮助用户深入理解。</think>### Android ConstraintLayout 属性详解 #### 一、基础布局属性 1. **相对定位**(核心约束属性): - `layout_constraintLeft_toLeftOf`:控件左边缘对齐目标控件左边缘 - `layout_constraintStart_toEndOf`:控件起始边缘对齐目标控件结束边缘 - `layout_constraintTop_toBottomOf`:控件顶部对齐目标控件底部 - `layout_constraintBaseline_toBaselineOf`:文本基线目标控件对齐 示例: ```xml <Button app:layout_constraintStart_toEndOf="@+id/guideline" app:layout_constraintTop_toTopOf="parent"/> ``` 2. **边距控制**: - `android:layout_margin`:通用边距 - `layout_goneMarginStart`:当目标控件隐藏时的特殊边距 #### 二、尺寸控制属性 1. **固定模式**: - `android:layout_width="0dp"`(MATCH_CONSTRAINT) - `android:minWidth`/`android:minHeight` $$ W = W_{min} + (W_{max} - W_{min}) \times (weight / totalWeight) $$ 2. **比例约束**: - `layout_constraintDimensionRatio="H,16:9"` 表示高度宽度保持16:9比例 #### 三、高级布局特性 1. **链式布局**(Chain): - `layout_constraintHorizontal_chainStyle` 支持三种模式: - `spread`(默认均匀分布) - `spread_inside`(两端控件贴边) - `packed`(整体居中) 2. **辅助工具**: - **Guideline**(参考线): ```xml <androidx.constraintlayout.widget.Guideline android:orientation="vertical" app:layout_constraintGuide_percent="0.3"/> ``` - **Barrier**(动态屏障): ```xml <androidx.constraintlayout.widget.Barrier app:barrierDirection="end" app:constraint_referenced_ids="button1,button2"/> ``` #### 四、完整属性对照表 | 属性分类 | 关键属性 | 值类型 | |------------------|-----------------------------------------|-------------| | 相对定位 | layout_constraint[方向]_to[方向]Of | @id/reference| | 边距控制 | layout_goneMargin[方向] | dimension | | 尺寸比例 | layout_constraintDimensionRatio | float/ratio | | 权重分布 | layout_constraintHorizontal_weight | integer | | 圆形定位 | layout_constraintCircle | radius+angle| [^1]: Android ConstraintLayout 基础教程 [^2]: 约束布局性能优化白皮书 [^3]: Google Android官方文档 §§ 1. ConstraintLayout相比RelativeLayout有哪些性能优势? 2. 如何实现控件在ConstraintLayout中的百分比定位? 3. Barrier组件在什么场景下使用最有效? 4. 动态修改ConstraintLayout约束条件的方法是什么? 5. ConstraintLayout 2.0新增了哪些高级特性?
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值