1# 尺寸设置 2 3用于设置组件的宽高、边距。 4 5> **说明:** 6> 7> 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8 9## width 10 11width(value: Length) 12 13设置组件自身的宽度,缺省时使用元素自身内容需要的宽度。若子组件的宽大于父组件的宽,则会画出父组件的范围。 14 15从API version 10开始,该接口支持calc计算特性。 16 17**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 18 19**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 20 21**系统能力:** SystemCapability.ArkUI.ArkUI.Full 22 23**参数:** 24 25| 参数名 | 类型 | 必填 | 说明 | 26| ----- | ---------------------------- | ---- | ------------------- | 27| value | [Length](ts-types.md#length) | 是 | 要设置的组件宽度。<br/>单位:vp | 28 29> **说明:** 30> 31> - 在[TextInput](./ts-basic-components-textinput.md)组件中,width设置auto表示自适应文本宽度。 32> 33> - 在[AlphabetIndexer](./ts-container-alphabet-indexer.md)组件中,width设置auto表示自适应宽度最大索引项的宽度。 34 35## height 36 37height(value: Length) 38 39设置组件自身的高度,缺省时使用元素自身内容需要的高度。若子组件的高大于父组件的高,则会画出父组件的范围。 40 41从API version 10开始,该接口支持calc计算特性。 42 43**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 44 45**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 46 47**系统能力:** SystemCapability.ArkUI.ArkUI.Full 48 49**参数:** 50 51| 参数名 | 类型 | 必填 | 说明 | 52| ----- | ---------------------------- | ---- | ------------------- | 53| value | [Length](ts-types.md#length) | 是 | 要设置的组件高度。<br/>单位:vp | 54 55> **说明:** 56> 57> 在[Row](./ts-container-row.md)、[Column](./ts-container-column.md)、[RelativeContainer](./ts-container-relativecontainer.md)组件中,width、height设置auto表示自适应子组件。 58 59## size 60 61size(value: SizeOptions) 62 63设置高宽尺寸。 64 65从API version 10开始,该接口支持calc计算特性。 66 67**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 68 69**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 70 71**系统能力:** SystemCapability.ArkUI.ArkUI.Full 72 73**参数:** 74 75| 参数名 | 类型 | 必填 | 说明 | 76| ----- | ------------------------------- | ---- | ----------------- | 77| value | [SizeOptions](#sizeoptions对象说明) | 是 | 设置高宽尺寸。<br/>单位:vp | 78 79## padding 80 81padding(value: Padding | Length | LocalizedPadding) 82 83设置内边距属性。 84 85从API version 10开始,该接口支持calc计算特性。 86 87**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 88 89**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 90 91**系统能力:** SystemCapability.ArkUI.ArkUI.Full 92 93**参数:** 94 95| 参数名 | 类型 | 必填 | 说明 | 96| ----- | ---------------------------------------- | ---- | ---------------------------------------- | 97| value | [Padding](ts-types.md#padding) \| [Length](ts-types.md#length) \| [LocalizedPadding](ts-types.md#localizedpadding12)<sup>12+</sup>| 是 | 设置组件的内边距。<br/>参数为Length类型时,四个方向内边距同时生效。<br/>默认值:0 <br/>单位:vp<br/>padding设置百分比时,上下左右内边距均以父容器的width作为基础值。 | 98 99## margin 100 101margin(value: Margin | Length | LocalizedMargin) 102 103设置外边距属性。 104 105从API version 10开始,该接口支持calc计算特性。 106 107**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 108 109**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 110 111**系统能力:** SystemCapability.ArkUI.ArkUI.Full 112 113**参数:** 114 115| 参数名 | 类型 | 必填 | 说明 | 116| ------ | ------------------------------------------------------------ | -------- | ------------------------------------------------------------ | 117| value | [Margin](ts-types.md#margin) \| [Length](ts-types.md#length) \| [LocalizedMargin](ts-types.md#localizedmargin12)<sup>12+</sup> | 是 | 设置组件的外边距。<br/>参数为Length类型时,四个方向外边距同时生效。<br/>默认值:0 <br/>单位:vp<br/>margin设置百分比时,上下左右外边距均以父容器的width作为基础值。在[Row](./ts-container-row.md)、[Column](./ts-container-column.md)、[Flex](./ts-container-flex.md)交叉轴上布局时,子组件交叉轴的大小与margin的和为整体。<br/>例如Column容器宽100,其中子组件宽50,margin left为10,right为20,子组件水平方向偏移10。 | 118 119## safeAreaPadding<sup>14+</sup> 120 121safeAreaPadding(value: Padding | LengthMetrics | LocalizedPadding) 122 123设置安全区边距属性。允许容器向自身添加组件级安全区域,供子组件延伸。 124 125**卡片能力:** 从API version 14开始,该接口支持在ArkTS卡片中使用。 126 127**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 128 129**系统能力:** SystemCapability.ArkUI.ArkUI.Full 130 131**参数:** 132 133| 参数名 | 类型 | 必填 | 说明 | 134| ----- | ---------------------------------------- | ---- | ---------------------------------------- | 135| paddingValue | [Padding](ts-types.md#padding) \| [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) \| [LocalizedPadding](ts-types.md#localizedpadding12)| 是 | 设置组件的安全区边距。<br/>默认值:0 <br/>单位:vp | 136 137## layoutWeight 138 139layoutWeight(value: number | string) 140 141设置组件的布局权重,使用该属性的组件在父容器([Row](./ts-container-row.md)/[Column](./ts-container-column.md)/[Flex](./ts-container-flex.md))的主轴方向按照权重分配尺寸。 142 143**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 144 145**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 146 147**系统能力:** SystemCapability.ArkUI.ArkUI.Full 148 149**参数:** 150 151| 参数名 | 类型 | 必填 | 说明 | 152| ----- | -------------------------- | ------- | ---------------------------------------- | 153| value | number \| string | 是 | 父容器尺寸确定时,设置了layoutWeight属性的子元素与兄弟元素占主轴尺寸按照权重进行分配,忽略元素本身尺寸设置,表示自适应占满剩余空间。<br/>默认值:0<br/>**说明:** <br/>仅在[Row](./ts-container-row.md)/[Column](./ts-container-column.md)/[Flex](./ts-container-flex.md)布局中生效。<br/>可选值为大于等于0的数字,或者可以转换为数字的字符串。<br/>如果容器中有子元素设置了layoutWeight属性,且设置的属性值大于0,则所有子元素不会再基于flexShrink和flexGrow布局。 | 154 155## constraintSize 156 157constraintSize(value: ConstraintSizeOptions) 158 159设置约束尺寸,组件布局时,进行尺寸范围限制。 160 161从API version 10开始,该接口支持calc计算特性。 162 163**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 164 165**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 166 167**系统能力:** SystemCapability.ArkUI.ArkUI.Full 168 169**参数:** 170 171| 参数名 | 类型 | 必填 | 说明 | 172| ----- | ---------------------------------------- | ---- | ---------------------------------------- | 173| value | [ConstraintSizeOptions](ts-types.md#constraintsizeoptions) | 是 | 设置约束尺寸。constraintSize的优先级高于Width和Height。取值结果参考constraintSize取值对width/height影响。<br/>默认值:<br/>{<br/>minWidth: 0,<br/>maxWidth: Infinity,<br/>minHeight: 0,<br/>maxHeight: Infinity<br/>}<br/>单位:vp<br/> | 174 175**constraintSize(minWidth/maxWidth/minHeight/maxHeight)取值对width/height影响** 176 177| 缺省值 | 结果 | 178| ---------------------------------------- | ---------------------------------------- | 179| \ | width=MAX(minWidth,MIN(maxWidth,width))<br/>height=MAX(minHeight,MIN(maxHeight,height)) | 180| maxWidth、maxHeight | width=MAX(minWidth,width)<br/>height=MAX(minHeight,height) | 181| minWidth、minHeight | width=MIN(maxWidth,width)<br/>height=MIN(maxHeight,height) | 182| width、height | 若minWidth<maxWidth,组件自身布局逻辑生效,width取值范围为[minWidth,maxWidth];否则,width=MAX(minWidth,maxWidth)。<br/>若minHeight<maxHeight,组件自身布局逻辑生效,height取值范围为[minHeight,maxHeight];否则,height=MAX(minHeight,maxHeight)。 | 183| width与maxWidth、height与maxHeight | width=minWidth<br/>height=minHeight | 184| width与minWidth、height与minHeight | 组件自身布局逻辑生效,width取值约束为不大于maxWidth。<br/>组件自身布局逻辑生效,height取值约束为不大于maxHeight。 | 185| minWidth与maxWidth、minHeight与maxHeight | width以所设值为基础,根据其他布局属性发生可能的拉伸或者压缩。<br/>height以所设值为基础,根据其他布局属性发生可能的拉伸或者压缩。| 186| width与minWidth与maxWidth | 使用父容器传递的布局限制进行布局。 | 187| height与minHeight与maxHeight | 使用父容器传递的布局限制进行布局。 | 188 189## SizeOptions对象说明 190 191**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 192 193**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 194 195| 参数名 | 类型 | 必填 | 说明 | 196| ----- | ---------------------------------------- | ---- | ---------------------------------------- | 197| width | [Length](ts-types.md#length) | 否 | 设置组件宽度。 | 198| height | [Length](ts-types.md#length) | 否 | 设置组件高度。 | 199 200## ConstraintSizeOptions对象说明 201 202**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 203 204**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 205 206| 参数名 | 类型 | 必填 | 说明 | 207| ----- | ---------------------------------------- | ---- | ---------------------------------------- | 208| minWidth | [Length](ts-types.md#length) | 否 | 设置组件最小宽度。 | 209| maxWidth | [Length](ts-types.md#length) | 否 | 设置组件最大宽度。 | 210| minHeight | [Length](ts-types.md#length) | 否 | 设置组件最小高度。 | 211| maxHeight | [Length](ts-types.md#length) | 否 | 设置组件最大高度。 | 212 213> **说明:** 214> 215> 在[Row](./ts-container-row.md)、[Column](./ts-container-column.md)、[RelativeContainer](./ts-container-relativecontainer.md)组件中,width、height设置auto表示自适应子组件。在[TextInput](./ts-basic-components-textinput.md)组件中,width设置auto表示自适应文本宽度。 216 217## 示例 218 219### 示例1(设置组件的宽高和边距) 220 221设置组件的宽度和高度,以及内边距和外边距。 222 223```ts 224// xxx.ets 225@Entry 226@Component 227struct SizeExample { 228 build() { 229 Column({ space: 10 }) { 230 Text('margin and padding:').fontSize(12).fontColor(0xCCCCCC).width('90%') 231 Row() { 232 // 宽度80 ,高度80 ,外边距20(蓝色区域),上下左右的内边距分别为5、15、10、20(白色区域) 233 Row() { 234 Row().size({ width: '100%', height: '100%' }).backgroundColor(Color.Yellow) 235 } 236 .width(80) 237 .height(80) 238 .padding({ top: 5, left: 10, bottom: 15, right: 20 }) 239 .margin(20) 240 .backgroundColor(Color.White) 241 }.backgroundColor(Color.Blue) 242 243 Text('constraintSize').fontSize(12).fontColor(0xCCCCCC).width('90%') 244 Text('this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text') 245 .width('90%') 246 .constraintSize({ maxWidth: 200 }) 247 248 Text('layoutWeight').fontSize(12).fontColor(0xCCCCCC).width('90%') 249 // 父容器尺寸确定时,设置了layoutWeight的子元素在主轴布局尺寸按照权重进行分配,忽略本身尺寸设置。 250 Row() { 251 // 权重1,占主轴剩余空间1/3 252 Text('layoutWeight(1)') 253 .size({ width: '30%', height: 110 }).backgroundColor(0xFFEFD5).textAlign(TextAlign.Center) 254 .layoutWeight(1) 255 // 权重2,占主轴剩余空间2/3 256 Text('layoutWeight(2)') 257 .size({ width: '30%', height: 110 }).backgroundColor(0xF5DEB3).textAlign(TextAlign.Center) 258 .layoutWeight(2) 259 // 未设置layoutWeight属性,组件按照自身尺寸渲染 260 Text('no layoutWeight') 261 .size({ width: '30%', height: 110 }).backgroundColor(0xD2B48C).textAlign(TextAlign.Center) 262 }.size({ width: '90%', height: 140 }).backgroundColor(0xAFEEEE) 263 // calc计算特性 264 Text('calc:').fontSize(12).fontColor(0xCCCCCC).width('90%') 265 Text('calc test') 266 .fontSize(50) 267 .fontWeight(FontWeight.Bold) 268 .backgroundColor(0xFFFAF0) 269 .textAlign(TextAlign.Center) 270 .margin('calc(25vp*2)') 271 // width和height设置百分比时,以父容器的width和height作为基础值。 272 .size({ width: 'calc(90%)', height: 'calc(50vp + 10%)' }) 273 }.width('100%').margin({ top: 5 }) 274 } 275} 276``` 277 278 279 280### 示例2(LocalizedPadding和LocalizedMargin类型的使用) 281 282padding和margin属性使用LocalizedPadding类型和LocalizedMargin类型。 283 284```ts 285// xxx.ets 286import { LengthMetrics } from '@kit.ArkUI' 287 288@Entry 289@Component 290struct SizeExample { 291 build() { 292 Column({ space: 10 }) { 293 Text('margin and padding:').fontSize(12).fontColor(0xCCCCCC).width('90%') 294 Row() { 295 // 宽度80 ,高度80 ,上下开始结束的外边距40、20、30、10(蓝色区域),上下开始结束的内边距分别为5、15、10、20(白色区域) 296 Row() { 297 Row().size({ width: '100%', height: '100%' }).backgroundColor(Color.Yellow) 298 } 299 .width(80) 300 .height(80) 301 .padding({ 302 top: LengthMetrics.vp(5), 303 bottom: LengthMetrics.vp(15), 304 start: LengthMetrics.vp(10), 305 end: LengthMetrics.vp(20) 306 }) 307 .margin({ 308 top: LengthMetrics.vp(40), 309 bottom: LengthMetrics.vp(20), 310 start: LengthMetrics.vp(30), 311 end: LengthMetrics.vp(10) 312 }) 313 .backgroundColor(Color.White) 314 }.backgroundColor(Color.Blue) 315 }.width('100%').margin({ top: 5 }) 316 } 317} 318``` 319 320从左至右显示语言示例图 321 322 323 324从右至左显示语言示例图 325 326 327 328### 示例3(设置安全区) 329 330对容器设置组件级安全区。 331 332```ts 333// xxx.ets 334import { LengthMetrics } from '@kit.ArkUI'; 335 336@Entry 337@Component 338struct SafeAreaPaddingExample { 339 build() { 340 Column() { 341 Column() { 342 Column() 343 .width("100%") 344 .height("100%") 345 .backgroundColor(Color.Pink) 346 } 347 .width(200) 348 .height(200) 349 .backgroundColor(Color.Yellow) 350 .borderWidth(10) 351 .padding(10) 352 .safeAreaPadding(LengthMetrics.vp(40)) 353 } 354 .height('100%') 355 .width('100%') 356 } 357} 358``` 359 360