HarmonyOS 显示输入法时,底部列表同时滚动问题

显示输入框时,同时显示输入法,这时,输入框和底部列表一起滚动,能否输入框跟随滚动,底部列表固定。

HarmonyOS
2024-12-24 15:54:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

可在list上加.expandSafeArea([SafeAreaType.KEYBOARD]),让list不避让软键盘。

参考demo:

import inputMethod from '@ohos.inputMethod';

@Entry
@Component
export struct AsrPage {
  @State message: string = 'Hello World'
  @State show: boolean = false
  inputMethodController = inputMethod.getController();
  control: TextAreaController = new TextAreaController()
  inputId: string = 'ceshi'
  @State items: Array<string> = new Array()

  aboutToAppear(): void {
    let textConfig: inputMethod.TextConfig = {
      inputAttribute: {
        textInputType: 0,
        enterKeyType: 1
      }
    }
    this.inputMethodController.attach(false, textConfig)
      .then(() => {
      })
      .catch((reason: ESObject) => {
      })
    for (let i = 0; i < 100; i++) {
      this.items.push(i + '')
    }
  }

  build() {
    NavDestination() {
      Stack({ alignContent: Alignment.Bottom }) {
        List() {
          ForEach(this.items, (item: string, index: number) => {
            ListItem() {
              Text(item).fontColor('#ff0000').fontSize(15)
            }
          })
        }.expandSafeArea([SafeAreaType.KEYBOARD])

        Column() {
          TextArea({
            placeholder: '',
            text: '',
            controller: this.control

          })
            .width('100%')
            .height(26)
            .defaultFocus(this.show)
            .focusable(this.show)
            .focusOnTouch(this.show)
            .enableKeyboardOnFocus(this.show)
            .visibility(this.show ? Visibility.Visible : Visibility.None)
            .borderColor('#ff0000')
            .backgroundColor('#ff0000')
            .id(this.inputId)

          Button('打开').onClick(() => {
            this.show = true
            this.control.caretPosition(this.message.length)
            focusControl.requestFocus(this.inputId)
          })

          Button('关闭').onClick(() => {
            this.show = true
            this.inputMethodController.hideTextInput().then(() => {
            }).catch((reason: ESObject) => {
              let data = 'sssaa<font>是的<font>不是'
              data.match('<[^>]*>')
            })
          })
        }.justifyContent(FlexAlign.End).width('100%')
      }.width('100%').height('100%')
    }.hideTitleBar(true)
  }
}
分享
微博
QQ
微信
回复
2024-12-24 18:51:01
相关问题
HarmonyOS如何监听输入法显示隐藏
834浏览 • 1回复 待解决
HarmonyOS 自带输入法输入问题
347浏览 • 1回复 待解决
小程序输入法键盘光标问题
576浏览 • 1回复 待解决
HarmonyOS 输入法光标控制
377浏览 • 1回复 待解决
输入法编程接口吗?
4935浏览 • 1回复 待解决
如何监听输入法输入内容的变化?
637浏览 • 1回复 待解决
HarmonyOS 本地模拟器怎么使用输入法
201浏览 • 1回复 待解决
HarmonyOS scroll滚动问题
156浏览 • 1回复 待解决