可以通过以下方案规避此问题:可获取窗口内容规避的区域,规避区域的类型是软键盘区域TYPE\_KEYBOARD,当软键盘弹出,获取规避区域的高度,通过margin-bottom来设置想要顶起组件。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5\#avoidareatype7示例:import window from '@ohos.window'; @Entry @Component struct ScrollExample { scroller: Scroller = new Scroller() private arr: number[] = [0, 1, 2, 3, 4, 5] @State scrollHeight: number = 0; @State isRebuild: boolean = false; @State keyHeight: number =0; @State text: string = '' aboutToAppear() { window.getLastWindow(getContext(this)).then(currentWindow =>{ let property = currentWindow.getWindowProperties(); // init window height let avoidArea = currentWindow.getWindowAvoidArea(window.AvoidAreaType.TYPE_KEYBOARD); this.scrollHeight = px2vp(property.windowRect.height - avoidArea.bottomRect.height); // monitor the hiding and display of softKeyboard currentWindow.on('avoidAreaChange', async data => { if (data.type !== window.AvoidAreaType.TYPE_KEYBOARD) { this.keyHeight=avoidArea.bottomRect.height; return; } this.scrollHeight = px2vp(property.windowRect.height - data.area.bottomRect.height); }) }) } build() { Stack({ alignContent: Alignment.TopStart }) { Column() { Scroll(this.scroller) { Column() { TextInput({ text: this.text, placeholder: 'input your word...' }) .placeholderFont({ size: 14, weight: 400 }) .width(320) .height(40).margin(200) .fontSize(14) .fontColor(Color.Black) .backgroundColor(Color.White) ForEach(this.arr, (item:number) => { Text(item.toString()) .width('90%') .height(150) .backgroundColor(0xFFFFFF) .borderRadius(15) .fontSize(16) .textAlign(TextAlign.Center) .margin({ top: 10 }) }) }.width('100%') } .width('100%').height(this.scrollHeight).layoutWeight(1) Text('这是一个测试文本') .width('100%') .height(50) .backgroundColor(Color.Red) .margin({bottom: this.scrollHeight}) }.width('100%').height('100%').justifyContent(FlexAlign.Start) }.width('100%').height('100%').backgroundColor(0xDCDCDC) } }
可以通过以下方案规避此问题:
可获取窗口内容规避的区域,规避区域的类型是软键盘区域TYPE\_KEYBOARD,当软键盘弹出,获取规避区域的高度,通过margin-bottom来设置想要顶起组件。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5\#avoidareatype7
示例: