仓颉语言中的自定义弹窗和 ArkTs 类似,但是还是有一些不同的地方。

在仓颉中通过 CustomDialogController 实现自定义弹窗,在弹窗中使用构造函数 CustomDialogControllerOptions 来传递弹窗的所有参数,为大家贴一段演示代码:

var dialogController: CustomDialogController = CustomDialogController(CustomDialogControllerOptions(
  builder: loadingdialog(),
  customStyle:true,
  autoCancel:false
  ))

初始化完成后的弹窗可以使用 open 和 close 方法来打开和关闭:

dialogController.open()
dialogController.close()

在仓颉中一些参数的写法也和 ArkTs 不太相同,比如 cancel 回调方法,比如颜色的设置。还要注意的是,@CustomDialog 实现的自定义弹窗的所有参数是不支持动态刷新的,这一点不太方便,幽蓝目前也正在寻找更加方便的弹窗方式。

下面为大家分享一段完整的半透明文字提示弹窗的实现代码:

var dialogController: CustomDialogController = CustomDialogController(CustomDialogControllerOptions(
  builder: loadingdialog(),
  gridCount:3,
  customStyle:true,
  autoCancel:false,
  maskColor:Color(0, 0, 0, alpha: 0.0),
  cancel:{ => AppLog.info('关闭回调') }
  ))


package ohos_app_cangjie_entry.components
import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
import cj_res_entry.app
@CustomDialog
public  class loadingdialog {
    var controller: Option<CustomDialogController> = Option.None
    func build() {
        Row() {
            Text('这是一个提示')
            .fontColor(Color.WHITE)
            .fontSize(15)
        }.height(200).width(200).alignItems(VerticalAlign.Center).justifyContent(FlexAlign.Center).backgroundColor(0x80000000).borderRadius(10)
    }
}
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐