HarmonyOS 鸿蒙Next bindSheet怎么设置适配内容大小来调整长度

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next bindSheet怎么设置适配内容大小来调整长度

bindSheet怎么设置适配内容大小来动态调整长度,里面可能会有一些选项以及显隐控制,导致长度变化

cke_275.png

2 回复
提供一种思路:
import { componentUtils } from '@kit.ArkUI';

@Entry @Component struct BindSheetDemo { @State isShow: boolean = false @State sheetHeight: number = 0; @State temData: string[] = [‘1’]

@Builder myBuilder() { Column() { Button(“添加元素”) .margin(10) .fontSize(20) .onClick(() => { this.temData.push(((Math.random() * 10) + 10).toFixed(0).toString()) })

  Button(<span class="hljs-string">"减少元素"</span>)
    .margin(<span class="hljs-number">10</span>)
    .fontSize(<span class="hljs-number">20</span>)
    .onClick(() =&gt; {
      <span class="hljs-keyword">this</span>.temData.splice(<span class="hljs-keyword">this</span>.temData.length - <span class="hljs-number">1</span>, <span class="hljs-number">1</span>)
    })
  Column() {
    Repeat(<span class="hljs-keyword">this</span>.temData)
      .each((repeat) =&gt; {
        Row() {
          Text(repeat.item)
        }
      })
  }
  .onSizeChange((oldValue: SizeOptions, newValue: SizeOptions) =&gt; {
    <span class="hljs-keyword">if</span> (oldValue &amp;&amp; newValue) {
      <span class="hljs-keyword">this</span>.sheetHeight += (newValue.height as number) - (oldValue.height as number)
    }
  })
}.id(<span class="hljs-string">'sheet'</span>)
.padding(<span class="hljs-number">10</span>)
.onAppear(() =&gt; {
  <span class="hljs-keyword">this</span>.sheetHeight = px2vp(componentUtils.getRectangleById(<span class="hljs-string">'sheet'</span>).size.height)
})

}

build() { RelativeContainer() { Button(‘弹出’) .onClick(() => { this.isShow = true }) .fontSize(20) .margin(10) .bindSheet($$this.isShow, this.myBuilder(), { height: this.sheetHeight, backgroundColor: Color.Green, }) } .height(‘100%’) .width(‘100%’) } }

在HarmonyOS鸿蒙系统中,针对Next bindSheet组件设置适配内容大小来调整长度,可以通过以下几种方式实现:

  1. 自动布局(Auto Layout):确保你的bindSheet组件采用了自动布局模式,这样它可以根据内容的大小自动调整尺寸。检查并设置布局参数,如layout_widthwrap_content,以便让组件宽度根据内容自适应。

  2. 内容监听:如果bindSheet的内容是动态变化的,可以通过监听内容变化事件,并在内容更新后重新计算bindSheet的高度,然后手动设置。这通常涉及到自定义逻辑来测量内容高度并应用新的尺寸。

  3. 约束布局(ConstraintLayout):使用约束布局可以更灵活地控制bindSheet的尺寸。通过为bindSheet设置约束条件,可以确保它根据其他视图或父容器的大小进行调整。

  4. 编程调整:在代码中,通过获取bindSheet的视图对象,可以调用相关方法来获取内容尺寸并设置bindSheet的高度。

鸿蒙Next入门到高级实战已发布,可以先学学https://www.itying.com/goods-1204.html

回到顶部