HarmonyOS Web组件高度问题

Web 组件设置高度100%,父组件是 Column,上面还有个 title 组件。

Column(){ 
  Text().height(200) 
  Web().height('100%') 
} 
.padding({bottom:100})

这样设置的 padding 属性不起作用是为什么,或者说 web 直接被顶下去了,设置了web 的高度没效果,除非设置 web 固定高度例如 height(600)。

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

​Column组件本身如果不设置宽高,他的宽高是由子组件的的内容撑开的,Web组件如果不设置宽高默认都是100%,所以Column的内外边距在某些时候会失效,如果实现你想要的效果建议使用固定高度。建议使用Flex组件,Flex组件在本身不设置高度的时候,会根据内外边距布局,不会被子视图的内容撑开。以下是两种方式的代码验证,请参考。

Colunm方式:​

Column(){ 
  Text().height(200) 
  Web({src:'https://www.huawei.com/',controller:this.controller}).onPageEnd((res)=>{ 
    console.log("onPageEnd",JSON.stringify(res)) 
  }).backgroundColor(Color.Red).onErrorReceive((err)=>{ 
    console.log("onErrorReceive",JSON.stringify(err)) 
  }).id("web").onClick((ele)=>{ 
    let web = getInspectorByKey("web") 
    console.log(web,"web") 
  }) 
}.backgroundColor(Color.Green).width("100%").id("Column") 
.onClick((ele)=>{ 
  let col = getInspectorByKey("Column") 
  console.log(col) 
})

Flex方式:

Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start, alignItems: ItemAlign.Stretch }){ 
  Text().height(200) 
  Web({src:'https://xxx.huawei.com/hi',controller:this.controller}).onPageEnd((res)=>{ 
    console.log("onPageEnd",JSON.stringify(res)) 
  }).backgroundColor(Color.Red).onErrorReceive((err)=>{ 
    console.log("onErrorReceive",JSON.stringify(err)) 
  }).id("web") 
    .onClick((ele) => { 
      let web = getInspectorByKey("web") 
      console.log(web, "web") 
    }) 
}.backgroundColor(Color.Yellow).width("100%").margin({bottom:100}).id("flex").onClick((ele)=>{ 
  let web = getInspectorByKey("flex") 
  console.log(web, "flex") 
})

正确的Flex布局如下:

Flex({  wrap: FlexWrap.Wrap }) { 
  Column() { 
    Text('测试2').fontColor(Color.White).height(50).backgroundColor(Color.Blue) 
    Text('测试2').fontColor(Color.White).height(50).backgroundColor(Color.Orange) 
  } 
  .width('100%') 
  .backgroundColor(Color.Red) 
  Scroll() { 
    Column() { 
      ForEach(this.list, (data: number) => { 
        Blank().height(10) 
        Text(data + ' item').width('100%').height(100).backgroundColor(Color.Gray) 
      }) 
    } 
  } 
}

​关于Flex布局请参考该链接:​https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-flex-V5

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS web组件自适应高度问题
759浏览 • 1回复 待解决
HarmonyOS Web高度自适应问题
444浏览 • 1回复 待解决
HarmonyOS 自适应父组件高度问题
709浏览 • 1回复 待解决
Web组件如何实现高度自适应?
920浏览 • 1回复 待解决
HarmonyOS web组件加载pdf问题
366浏览 • 1回复 待解决
Web组件获取高度不一样
2050浏览 • 1回复 待解决
HarmonyOS Web组件头部参数问题
45浏览 • 1回复 待解决
HarmonyOS Web组件开发问题咨询
50浏览 • 1回复 待解决
HarmonyOS Web组件内容缩放问题
79浏览 • 1回复 待解决
web组件registerJavaScriptProxy的问题
1592浏览 • 0回复 待解决
HarmonyOS Web组件跨域请求问题
40浏览 • 1回复 待解决
HarmonyOS GridItem自适应高度问题
202浏览 • 1回复 待解决
HarmonyOS 高度自适应的问题
148浏览 • 1回复 待解决
HarmonyOS scroll的高度设置问题
603浏览 • 1回复 待解决