HarmonyOS 半模态转场

bindSheet SheetOptions中title使用CustomBuilder自定义title的高度扩展不出去,被限制了56vp的高度,这个如何可以自定义title的高度。

这种实现 如何固定title在顶部,向上滑动不滚动出屏幕

import { router } from '@kit.ArkUI'

@Entry
@Component
struct Index {
  data: number[] = []

  aboutToAppear(): void {
    for (let i = 0; i < 100; i++) {
      this.data.push(i)
    }
  }

  @Builder
  panelBuilder() {
    Column() {
      Text('官方DEMO 示例1 (title自定义)')
        .height(100)
        .width('100%')
        .textAlign(TextAlign.Center)
        .backgroundColor('#FF0000')
        .onClick(() => {
          router.pushUrl({ url: 'pages/SheetTransitionExample' })
        })
      ForEach(this.data, (index: number) => {
        Text(`${index}`)
      })
    }.width('100%').backgroundColor('#FFFFFF')
    .height('auto')
  }

  build() {
    Stack().bindSheet(true, this.panelBuilder(), {
      detents: [SheetSize.MEDIUM, SheetSize.LARGE, 200],
      dragBar: true,
      showClose: true,
      preferType: SheetType.CENTER,
      enableOutsideInteractive: true,
      scrollSizeMode: ScrollSizeMode.CONTINUOUS,
      onWillDismiss: (dismissSheetAction: DismissSheetAction) => {
      }
    })
  }
}
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

请参考示例代码:

@Entry
@Component
struct TextListviewPage {
  @State isShow:boolean = false
  @State isShow2:boolean = false
  @State sheetHeight:number = 300;
  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  @Builder myBuilder() {
    Column() {
      Text('title')
        .height(100)
        .width('100%')
        .textAlign(TextAlign.Center)
        .backgroundColor('#FF0000')

      List({ space: 20, initialIndex: 0 }) {
        ForEach(this.arr, (item: number) => {
          ListItem() {
            Text('' + item)
              .width('100%').height(100).fontSize(16)
              .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
          }
        }, (item: string) => item)
      }
      .listDirection(Axis.Vertical) // 排列方向
      .scrollBar(BarState.Off)
      .friction(0.6)
      .divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线
      .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring
      .onScrollIndex((firstIndex: number, lastIndex: number, centerIndex: number) => {
        console.info('first' + firstIndex)
        console.info('last' + lastIndex)
        console.info('center' + centerIndex)
      })
      .onScroll((scrollOffset: number, scrollState: ScrollState) => {
        console.info(`onScroll scrollState = ScrollState` + scrollState + `, scrollOffset = ` + scrollOffset)
      })
      .width('90%')
    }
    .width('100%')
    .height('100%')
    .backgroundColor(0xDCDCDC)
    .padding({ top: 5 })
  }
  build() {
    Column() {
      Button("transition modal 1")
        .onClick(() => {
          this.isShow = true
        })
        .fontSize(20)
        .margin(10)
        .bindSheet($$this.isShow, this.myBuilder(), {
          dragBar: true,
          showClose: true,
          preferType: SheetType.CENTER,
          enableOutsideInteractive: true,
          scrollSizeMode: ScrollSizeMode.CONTINUOUS,
          onWillDismiss: (dismissSheetAction: DismissSheetAction) => {
          }
        })
    }
    .justifyContent(FlexAlign.Center)
    .width('100%')
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
23h前
相关问题
如何固定模态转场的高度
529浏览 • 1回复 待解决
模态转场如何控制固定高度
1935浏览 • 1回复 待解决
模态转场来实现弹框样式的页面
922浏览 • 1回复 待解决
HarmonyOS 模态相关使用
62浏览 • 1回复 待解决
HarmonyOS bindSheet模态弹窗
334浏览 • 1回复 待解决
基于bindSheet的模态弹窗
1040浏览 • 1回复 待解决
应用怎么实现模态效果
2287浏览 • 1回复 待解决