HarmonyOS 鸿蒙Next CustomerDialog 组件中嵌套Scroll ,(不滑动?)

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

HarmonyOS 鸿蒙Next CustomerDialog 组件中嵌套Scroll ,(不滑动?)

 
在CustomeDialog中使用Scroll组件无法滑动,

Scroll(this.scroller) {

}
.layoutWeight(1)
.scrollable(ScrollDirection.Vertical)

父组件高度都是100%

2 回复

demo您参考下

@CustomDialog

struct CustomDialogExample {

  scroller: Scroller = new Scroller()

  controller?: CustomDialogController

  cancel: () => void = () => {

  }

  confirm: () => void = () => {

  }

  build() {

    Scroll(this.scroller) {

      Column() {

        Text('这是自定义弹窗')

          .fontSize(30)

          .height(100)

        Button('点我关闭弹窗')

          .onClick(() => {

            if (this.controller != undefined) {

              this.controller.close()

            }

          })

          .margin(20)

      }.height(500).width(300)

    }

    .layoutWeight(1)

    .scrollable(ScrollDirection.Vertical)

  }

}

@Entry

@Component

struct CustomDialogUser {

  dialogController: CustomDialogController | null = new CustomDialogController({

    builder: CustomDialogExample({

      cancel: () => {

        this.onCancel()

      },

      confirm: () => {

        this.onAccept()

      }

    }),

    cancel: this.existApp,

    autoCancel: true,

    onWillDismiss: (dismissDialogAction: DismissDialogAction) => {

      console.info("reason=" + JSON.stringify(dismissDialogAction.reason))

      console.log("dialog onWillDismiss")

      if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {

        dismissDialogAction.dismiss()

      }

      if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {

        dismissDialogAction.dismiss()

      }

    },

    alignment: DialogAlignment.Center,

    // offset: { dx: 0, dy: -20 },

    customStyle: false,

    cornerRadius: 20,

    width: 300,

    height: 200,

    borderWidth: 1,

    borderStyle: BorderStyle.Dashed, 

    borderColor: Color.Blue, 

    backgroundColor: Color.White,

  })

  aboutToDisappear() {

    this.dialogController = null // 将dialogController置空

  }

  onCancel() {

    console.info('Callback when the first button is clicked')

  }

  onAccept() {

    console.info('Callback when the second button is clicked')

  }

  existApp() {

    console.info('Click the callback in the blank area')

  }

  build() {

    Column() {

      Button('click me')

        .onClick(() => {

          if (this.dialogController != null) {

            this.dialogController.open()

          }

        }).backgroundColor(0x317aff)

    }.width('100%').margin({ top: 5 })

  }

}

更多关于HarmonyOS 鸿蒙Next CustomerDialog 组件中嵌套Scroll ,(不滑动?)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next CustomerDialog组件嵌套Scroll视图时,若遇到不滑动的问题,通常是因为滚动事件的冲突或组件属性的设置不当。

针对此情况,首先需要确保Scroll组件已正确设置其滚动方向(如vertical或horizontal)及高度或宽度属性,确保有足够的空间供其滚动。同时,检查Dialog组件是否有设置阻止内部元素滚动的属性,例如某些布局属性可能默认会限制子视图的滚动。

此外,还需考虑Dialog的触摸事件是否被其他组件拦截。可以通过设置触摸事件的监听和拦截逻辑,确保滚动事件能够正确地传递给Scroll组件。

另一个可能的原因是,Dialog的弹出层级和布局方式影响了Scroll的滚动。可以尝试调整Dialog的布局方式,如使用绝对布局或相对布局,以及调整Dialog的层级,确保Scroll组件在正确的层级上。

最后,确保Scroll组件内的内容确实超出了其可视区域,否则即使设置了滚动属性,也无法触发滚动。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部