HarmonyOS 弹窗不避让软键盘

HarmonyOS 弹窗不避让软键盘。

HarmonyOS
2024-08-30 15:57:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

参考:

import {Test1} from './Test1' 
@CustomDialog 
export struct CustomDialogExample { 
  controller: CustomDialogController 
  @Consume ('pageInfos') pageInfos: NavPathStack 
  build() { 
    Column() { 
      Text('跳转') 
        .onClick(() => { 
          this.pageInfos.pushPath({ name: 'pageOne' }) //将name指定的NavDestination页面信息入栈 
        }) 
    }.height(200).width(300).backgroundColor(Color.White) 
  } 
} 
// Test1.ets 
import promptAction from '@ohos.promptAction'; 
// @Entry 
@Component 
export struct Test1 { 
  @State message: string = 'Hello World'; 
  build() { 
    NavDestination(){ 
      Row() { 
        Column() { 
          Text(this.message) 
            .fontSize(50) 
            .fontWeight(FontWeight.Bold) 
        } 
        .width('100%') 
      } 
      .height('100%') 
    }.onBackPressed(()=>{ 
      promptAction.showToast({message:'123'}) 
      return false 
    }) 
  } 
} 
// Index.ets 
import {Test1} from "./Test1" 
@Entry 
@Component 
struct CustomdialogJump { 
  aboutToAppear(){ 
    // this.dialogController.open() 
  } 
  @Provide('pageInfos') pageInfos: NavPathStack = new NavPathStack() 
  @State textValue: string = '输入' 
  // 显隐控制设置为不占用 
  @State visible: Visibility = Visibility.None 
  @Builder 
  PageMap(name: string) { 
    if (name === 'pageOne') { 
      Test1() 
    } 
  } 
  build() { 
    Navigation(this.pageInfos){ 
      Stack() { 
        Row() { 
          // 初始页面 
          Column() { 
            Text('我是第一个页面') 
              .fontSize(30) 
              .fontWeight(FontWeight.Bold) 
            // 触发dialog的地方 
            Button('按钮') 
              .onClick(() => { 
                console.log("hit me!") 
                if (this.visible == Visibility.Visible) { 
                  this.visible = Visibility.None 
                } else { 
                  this.visible = Visibility.Visible 
                } 
              }) 
              .backgroundColor(0x777474) 
              .fontColor(0x000000) 
          } 
          .height('100%') 
          .width('100%') 
          .justifyContent(FlexAlign.Start) 
          .alignItems(HorizontalAlign.Center) 
        } 
        .height('100%') 
        .backgroundColor('#FFF') 
        //这里开始是构造弹窗效果主要需要修改的地方,首先是加了一个半透明灰色的蒙层效果 
        Text('') 
          .onClick(() => { 
            if (this.visible == Visibility.Visible) { 
              this.visible = Visibility.None 
            } else { 
              this.visible = Visibility.Visible 
            } 
          }) 
          .width('100%') 
          .height('100%') 
            // 透明度可以自己调节一下 
          .opacity(0.5) 
          .backgroundColor(Color.Black) 
          .visibility(this.visible) 
        Column() { 
          // 这个可以调节对话框效果,栅格布局,xs,sm,md,lg分别为四种规格 
          // 下面的breakpoints是用来区别当前属于哪个类型的断点 
          // gridRow里的栅格数量为总数,gridCol里的就是偏移和假Dialog所占据的栅格数 
          GridRow({ 
            columns:{xs:1 ,sm: 4, md: 8, lg: 12}, 
            breakpoints: { value: ["400vp", "600vp", "800vp"], 
              reference: BreakpointsReference.WindowSize }, 
          }) 
          { 
            GridCol({ 
              span:{xs:1 ,sm: 2, md: 4, lg: 8}, 
              offset:{xs:0 ,sm: 1, md: 2, lg: 2} 
            }){ 
              // 这里放的就是原Dialog里的column里的东西,稍微改改应该就可以用了 
              Column() { 
                Text('安全隐私').fontSize(20).margin({ top: 10, bottom: 10 }) 
                Text('是否跳转到隐私详情页面?').fontSize(16).margin({ bottom: 10 }) 
                Search() 
                  .backgroundColor(Color.Gray) 
                  .height(200) 
                Flex({ justifyContent: FlexAlign.SpaceAround }) { 
                  Button('取消') 
                    .onClick(() => { 
                      if (this.visible == Visibility.Visible) { 
                        this.visible = Visibility.None 
                      } else { 
                        this.visible = Visibility.Visible 
                      } 
                    }).backgroundColor(0xffffff).fontColor(Color.Black) 
                  Button('确定') 
                    .onClick(() => { 
                      this.pageInfos.pushPath({ name: 'pageOne' }) 
                    }).backgroundColor(0xffffff).fontColor(Color.Red) 
                }.margin({ bottom: 10 }) 
              } 
              .backgroundColor(0xffffff) 
              .visibility(this.visible) 
              .clip(true) 
              .borderRadius(20) 
            } 
          } 
        }.width('100%')//设置弹窗宽度 
      }.height('100%') 
    }.navDestination(this.PageMap) 
    .hideTitleBar(true) 
  } 
}
分享
微博
QQ
微信
回复
2024-08-30 19:58:35
相关问题
如何实现弹窗软键盘避让
1380浏览 • 1回复 待解决
HarmonyOS 如何代码控制软键盘弹出?
343浏览 • 1回复 待解决
如何判断软键盘是否弹出
2016浏览 • 1回复 待解决
关于软键盘弹出遮挡问题
1087浏览 • 1回复 待解决
HarmonyOS如何代码收起软键盘
413浏览 • 1回复 待解决
API8 怎么隐藏软键盘
2467浏览 • 1回复 待解决
如何主动收起软键盘
247浏览 • 1回复 待解决
HarmonyOS 关于软键盘的相关问题
341浏览 • 0回复 待解决
HarmonyOS 如何获取软键盘的高度?
382浏览 • 1回复 待解决
软键盘弹出时,页面的自适应
1383浏览 • 1回复 待解决
CustomDialog与软键盘的问题
326浏览 • 1回复 待解决
HarmonyOS如何获取系统软键盘的高度?
347浏览 • 1回复 待解决