【问题标题】:Displaying entire multiline EditText above keyboard. Not just writing line在键盘上方显示整个多行 EditText。不只是写线
【发布时间】:2021-04-20 13:13:23
【问题描述】:

最近,我一直在开发一个聊天 UI,其中我有一些自定义组件,主要是 EditText,供用户编写消息。第一个图像将是一个示例布局,不一定是我使用的那个,但概念是相同的。其他两个图像,是 UI 的当前状态,以及我想要实现的目标。

仅供参考,这是一个片段,在一个 Activity 中,它有一个 BottomNavigation 组件。我做这个澄清,因为,我是否应该只应用windowSoftInputMode="adjustResize" 恐怕BottomNavigation 组件也会出现在键盘上方,按钮也会出现。

所以我猜问题是:如何让键盘保持在整个 EditText 下方?这甚至可能吗?这是我最关心的问题。

谢谢!

【问题讨论】:

  • 使用链接中接受的答案。您应该将 softInput 模式更改为 adjustResize 您也可以在运行时执行此操作,或者将其放在符合您需要的清单中。对于BottomNavigation,使用链接使其可见并在键盘可见性更改时消失。据我所知,这是唯一的解决方案。
  • @ADM 并且当键盘出现时按钮也应该可见/消失?我会检查链接。谢谢。

标签: android android-layout android-edittext android-softkeyboard


【解决方案1】:

在兔子洞钻了好一阵子之后,我基本上找到了三种方法:

  1. 使用ViewTreeObserver.OnGlobalLayoutListener,在上面提供的问题ADM中提到,这反过来又引用了这篇文章here

  2. 利用 this 库,对许多人来说,这似乎可以解决问题。

  3. 最后,是我见过最少的一个。对于 API 级别 30 或更高级别的设备,您可以使用以下代码来监听键盘可见性的变化。它被完整描述,还有许多其他有用的新东西,here

    ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
        val imeVisible = insets.isVisible(Type.ime())
        // do something with imeVisible value
    }
    

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 2018-06-08
    • 2014-01-21
    • 2013-08-23
    • 2021-01-27
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多