HarmonyOS 子控件设置宽度100%问题

子控件设置宽度100%,当再添加margin属性,子控件的展示宽度仍然是屏幕宽度,导致右侧超出屏幕无法展示,这是个bug还是就是这样设计的,如果是这样设计的目的和优势是什么?

HarmonyOS
2024-12-25 13:38:59
635浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

给子组件设置margin值,那么子组件的宽度就是本身的宽度加上margin的宽度,设置wdith(‘100%’)后,设置水平margin,子组件宽度就会超过父组件,所以得不到想要的效果,建议width值和margin都用百分比控制,加起来是100%即可,如下demo所示:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Row().width('90%').margin({ left: '5%', right: '5%' }).height(200).backgroundColor(Color.Yellow)
      }.width('90%').height(300).border({ width: 3, color: Color.Pink }).margin('5%')
    }.height('100%')
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

或者用Flex:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Flex({
          justifyContent: FlexAlign.Center,
          alignItems: ItemAlign.Center
        }) {
          Row().width('100%').margin({ left: '5%', right: '5%' }).height(200).backgroundColor(Color.Yellow)
        }.width('90%').height(300).border({ width: 3, color: Color.Pink }).margin('5%')
      }
    }.height('100%')
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

并不是bug,而是设计的一部分,旨在提高布局的灵活性和兼容性。这种设计方式在许多前端框架中是一致的,包括HTML/CSS中的盒模型。能够明确地计算并控制元素的总宽度,包括内边距和边距,使得布局更加可预测和精确。

分享
微博
QQ
微信
回复
2024-12-25 15:05:25


相关问题
HarmonyOS RelativeContainer控件显示问题
945浏览 • 1回复 待解决
HarmonyOS 宽度100%,左右间距不生效
441浏览 • 1回复 待解决
HarmonyOS 宽度100% margin左右不生效
672浏览 • 1回复 待解决
设置组件的宽度不超出父组件
1030浏览 • 1回复 待解决
如何设置父组件随组件宽度变化
2676浏览 • 1回复 待解决
HarmonyOS UI布局子控件超出父控件宽度
494浏览 • 1回复 待解决
HarmonyOS list控件组件复用
934浏览 • 1回复 待解决
HarmonyOS 组件超出父组件宽度
516浏览 • 1回复 待解决