HarmonyOS 如何让自定义弹窗不被顶出去

自定义弹窗点击输入框时,整个弹窗被顶出去了,这个避让模式能否控制或关闭

因为这个弹窗有几个页面都会有弹出,不想使用半模态实现该弹窗的效果,有没有什么办法解决?

HarmonyOS
2024-12-25 08:19:19
1.2w浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

自定义弹窗仅适用于简单提示场景,不能替代页面使用。由于弹窗存在完全避让输入法行为,即在软键盘弹出时,会自动向上抬起软键盘高度,因此如果弹窗高度过大时,可能会导致部分区域不可见。

建议使用模态框实现如果页面路由使用Navigation实现,可以将dialog改为一个navDestination,将mode类型设置为NavDestination.DIALOG即可达到dialog的效果,其通过顶高整体的方式使得TextInput不会被遮挡,参考如下代码:

@Component
struct Dialog01 {
  @Consume('pageInfos') pageInfos: NavPathStack;

  build() {
    NavDestination() {
      Stack() {
        Column()
          .width('100%')
          .height('100%')
          .backgroundColor(Color.Gray)
          .opacity(0.1)
          .onClick(() => {
            this.pageInfos.pop();
          })
        Column() {
          Text('登陆asdas').fontSize(15)
          TextInput({ placeholder: "请输入手机号" }).margin(5)
          TextInput({ placeholder: "请输入验证码" }).margin(5)
          Button("登录")
        }
        .padding(10)
        .width(300)
        .height(200)
        .backgroundColor(Color.White)
        .borderRadius(10)
      }
    }.hideTitleBar(true).mode(NavDestinationMode.DIALOG)
  }
}

@Entry
@Component
struct Index {
  @Provide('NavPathStack') pageInfos: NavPathStack = new NavPathStack()
  isLogin: boolean = false;

  @Builder
  PagesMap(name: string) {
    Dialog01()
  }

  build() {
    Navigation(this.pageInfos) {
      Button('点击登录').width('80%').onClick(() => {
        this.pageInfos.pushPathByName('Dialog01', '');
      })
    }.mode(NavigationMode.Stack).titleMode(NavigationTitleMode.Mini).title('主页').navDestination(this.PagesMap)
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
分享
微博
QQ
微信
回复
2024-12-25 10:40:48


相关问题
自定义弹窗自定义转场动画
1629浏览 • 1回复 待解决
HarmonyOS 如何封装自定义弹窗
583浏览 • 1回复 待解决
如何自定义弹窗中再次弹窗
2783浏览 • 1回复 待解决
HarmonyOS 自定义弹窗如何更新弹窗的UI
583浏览 • 1回复 待解决
HarmonyOS 自定义弹窗选择
974浏览 • 1回复 待解决
自定义弹窗如何嵌套使用
2121浏览 • 1回复 待解决
HarmonyOS 如何设置自定义弹窗透明
542浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog
485浏览 • 1回复 待解决
如何设置自定义弹窗位置
2469浏览 • 1回复 待解决
HarmonyOS 如何制作自定义加载弹窗
898浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog问题
1041浏览 • 1回复 待解决
HarmonyOS 自定义弹窗关闭问题
544浏览 • 1回复 待解决
HarmonyOS 自定义弹窗层级问题
634浏览 • 1回复 待解决
HarmonyOS 使用全局自定义弹窗
522浏览 • 1回复 待解决
HarmonyOS 自定义弹窗控制问题
660浏览 • 1回复 待解决
HarmonyOS 自定义弹窗的问题
1327浏览 • 1回复 待解决