HarmonyOS 鸿蒙Next:promptAction.openCustomDialog实现由下往上弹出效果,添加滑动手势控制滑动范围

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

HarmonyOS 鸿蒙Next:promptAction.openCustomDialog实现由下往上弹出效果,添加滑动手势控制滑动范围

import { BusinessError } from ‘@ohos.base’;

import { ComponentContent } from “@ohos.arkui.node”;

class Params {

  text: string = “”

  constructor(text: string) {

    this.text = text;

  }

} //传参

@Builder

function buildText(params: Params) {

  Row(){

    Column() {

      Text(params.text)

        .fontSize(20)

        .textAlign(TextAlign.Center)

        .fontWeight(FontWeight.Bold)

        .padding(8)

      Text(‘方便为你提供本地新闻和天气信息,并且根据您的位置信息发现附近的免费WiFi’)

        .fontSize(16)

        .textAlign(TextAlign.Center)

        .padding({ left:14,right:14})

        .margin({top:-4})

      Row({space:64}){

        Button(“不允许”)

        Button(“允许”)

      }

      .padding(24)

    }

    .width(“90%”)

    .borderRadius(8)

    .backgroundColor(’#FFF0F0F0’)

  }

  .height(“100%”)

  .visibility(800)

  // 定义进场出场转场动画效果

  .transition(TransitionEffect.OPACITY.animation({duration: 800}).combine(TransitionEffect.translate({y: 100})))

} //自定义组件的内容

@Entry

@Component

struct Index {

  @State message: string = “允许“应用”在您使用该应用时访问您的位置吗?”

  build() {

    Row() {

      Column() {

        Button(“click me”)

          .onClick(() => {

            let uiContext = this.getUIContext();

            let promptAction = uiContext.getPromptAction();

            let contentNode =

              new ComponentContent(uiContext, wrapBuilder(buildText), new Params(this.message)); //上下文、自定义节点、传参

            try {

              promptAction.openCustomDialog(contentNode);

            } catch (error) {

              let message = (error as BusinessError).message;

              let code = (error as BusinessError).code;

              console.error(OpenCustomDialog args error code is ${code}, message is ${message});

            }

          })

      }

      .width(‘100%’)

      .height(‘100%’)

    }

    .height(‘100%’)

  }

}



关于HarmonyOS 鸿蒙Next:promptAction.openCustomDialog实现由下往上弹出效果,添加滑动手势控制滑动范围的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

3 回复
你是想既实现从底部弹出又想实现滑动弹出dialog?

其实要实现半模态的效果。只是bindSheet这需要绑定组件才能使用,我想自定义一个组件,通过事件来调起弹窗 bindSheet bindSheet(isShow: Optional<boolean>, builder: CustomBuilder, options?: SheetOptions)

给组件绑定半模态页面,点击后显示模态页面。

已经解决了,用 promptAction.openCustomDialog + PanGesture 可以实现

回到顶部