HarmonyOS鸿蒙Next中关于popup内容设置100%到底继承哪里?tab子组件100%高度是哪里?

HarmonyOS鸿蒙Next中关于popup内容设置100%到底继承哪里?tab子组件100%高度是哪里?

在使用popup的时候一定要取消监听,遇到过反复创建崩溃的问题,不知道是bug还是特性?

// 通过句柄向对应的查询条件取消注册回调,可以由开发者自行决定在何时调用。
this.listener.off('layout', OffFuncLayout)
this.listener.off('draw', OffFuncDraw)

import inspector from '@ohos.arkui.inspector'
import componentUtils from '@ohos.arkui.componentUtils'

@State vis: boolean = false
@State pageMainContentHeight: number = 0

listener: inspector.ComponentObserver = inspector.createComponentObserver('pageMainContent')

aboutToAppear(): void {
  this.listener.on('draw', () => {
    this.pageMainContentHeight = componentUtils.getRectangleById('pageMainContent').size.height // 单位是px
  })
}

@Builder
popupBuilder() {
  Scroll() {
    Column() {
      //xxx
    }
  }
  .width('100%')
  .height(`${this.pageMainContentHeight}px`)
  .backgroundColor(Color.White)
  .scrollable(ScrollDirection.Vertical)
  .scrollBar(BarState.Off)
  .align(Alignment.Top)
}

xxx.bindPopup(this.vis, {
  builder: this.popupBuilder,
  placement: Placement.Bottom,
  enableArrow: false,
  popupColor: Color.Transparent,
  mask: true,
  radius: 0,
  shadow: {
    radius: 0,
  },
  backgroundBlurStyle: BlurStyle.NONE,
  autoCancel: true,
  // 设置为false(默认值),底部导航条会有避让。
  // true会完全遮住,但是textInput、Search使用键盘输入数据时,会自动关闭
  // showInSubWindow: true,
  onStateChange: (e) => {
    console.log(`onSearchAssociateVis 弹窗回调${e.isVisible}`)
  this.searchAssociateVis = e.isVisible
}
})

pageMainContent高度需要自己准确计算,如果算多了,就会以屏幕顶部为起点,让人误以为Placement.Bottom失效了


更多关于HarmonyOS鸿蒙Next中关于popup内容设置100%到底继承哪里?tab子组件100%高度是哪里?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
  1. 在使用 popup 的时候一定要取消监听
  2. pageMainContentHeight 高度
    – 可以获取组件当前坐标,使用屏幕高度取差值。scroll 添加 constraintSize({maxHeight:this.pageMainContentHeight}) 属性

更多关于HarmonyOS鸿蒙Next中关于popup内容设置100%到底继承哪里?tab子组件100%高度是哪里?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Popup组件的内容设置100%高度继承自其父容器的布局属性。Popup作为一个浮动层,其内容的高度默认会根据内容自身的大小进行自适应。如果希望Popup内容高度设置为100%,需要确保其父容器有明确的高度定义,例如通过height属性设置为固定值或百分比。

对于Tab子组件的100%高度,通常继承自TabContainerTabContent的布局属性。Tab子组件的高度默认会填充其父容器的高度。如果父容器的高度设置为100%,那么Tab子组件的高度也会相应地设置为100%。

具体实现时,可以通过设置layoutWeightheight属性来确保Tab子组件的高度能够继承父容器的高度。例如,在TabContent中,可以将height属性设置为100%,这样其子组件的高度也会继承为100%。

总结:Popup内容的100%高度继承自其父容器,Tab子组件的100%高度继承自TabContainerTabContent的布局属性。

在HarmonyOS鸿蒙Next中,Popup组件的内容设置100%高度通常继承自其父容器或直接指定的布局参数。对于Tab子组件的100%高度,默认情况下会继承自TabContent容器的高度。如果未明确指定,TabContent会占据父容器的剩余空间。建议在布局时明确设置PopupTab组件的高度属性,以确保其符合预期。

回到顶部