Android 在键盘上方显示整个多行编辑文本。不仅仅是写行

Android 在键盘上方显示整个多行编辑文本。不仅仅是写行,android,android-layout,android-edittext,android-softkeyboard,Android,Android Layout,Android Edittext,Android Softkeyboard,最近,我一直在开发一个聊天界面,其中有一些自定义组件,主要是EditText,供用户在上面写消息。第一个图像是一个示例布局,不一定是我正在使用的,但概念是相同的。另外两个图像是UI的当前状态,以及我想要实现的目标 仅供参考,这是活动中的一个片段,具有底部导航组件。我要澄清这一点,因为我是否应该应用windowSoftInputMode=“adjustResize”恐怕底部导航组件也会出现在键盘上方,按钮也会出现 所以我猜问题是:如何让键盘保持在整个编辑文本的下方?这可能吗?这是我最关心的问题

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

仅供参考,这是活动中的一个片段,具有底部导航组件。我要澄清这一点,因为我是否应该应用
windowSoftInputMode=“adjustResize”
恐怕底部导航组件也会出现在键盘上方,按钮也会出现

所以我猜问题是:如何让键盘保持在整个编辑文本的下方?这可能吗?这是我最关心的问题


谢谢

在深入兔子洞之后,我基本上找到了三种方法:

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

  • 对许多人来说,利用图书馆似乎是个好办法

  • 最后,我在那里看到的最少的一个。对于API级别为30或更高的设备,您可以使用以下代码来侦听键盘可见性的更改。它被完整地描述,以及许多其他有用的新事物:


  • 这回答了你的问题吗?在链接中使用已接受的答案。您应该将softInput模式更改为
    adjustResize
    u也可以在运行时执行此操作,也可以将其放在清单中,以适合您的需要为准。对于
    BottomNavigation
    ,当键盘可见性发生变化时,使用链接使其可见并消失。据我所知,这是唯一的解决方案。@当键盘出现时,ADM和按钮也应该可见/消失?我会查看链接的。谢谢
    ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
        val imeVisible = insets.isVisible(Type.ime())
        // do something with imeVisible value
    }