2

我目前正在使用 Python 和 Kivy 框架开发 Android 应用程序。屏幕的大部分空间由 text_input 小部件使用。我想在 android 软键盘弹出时调整这个 text_input 的大小,以便 text_input 在键盘顶部结束。

为了做到这一点,我尝试使用 Window.softinput_mode='resize' 并且当它不起作用时,请参考 Window.keyboard_height 来进行我自己的调整大小和定位。根据 Window 源代码中的文档和注释,我发现在 Android(Kivy 1.9 - 1.10)上使用 SDL2 时两者都不支持。

我测试了 Window.softinput_mode='below_target' 似乎没有做任何事情,而 Window.softinput_mode='pan' 工作但没有给我正确的功能。

我尝试的最后一件事是设置 Window.softinput_mode='pan' 并使用绑定到 on_keyboard 事件的函数调用打印出 Window.top 的值,这样如果平移只是向上移动了 Window 位置,我可以使用那个参考点来做我的定位和调整大小。但是 Window.top 的值在平移时似乎不会改变。

引用此问题并提供工作示例的唯一其他堆栈流程使用了调整大小模式,该模式在使用 SDL2 时不起作用。

当软键盘出现在android上时正确调整主kivy窗口的大小

是否有任何解决方法来完成此功能或与 SDL2 不同的提供程序在 Android 上运行良好?

4

1 回答 1

0

这似乎是一个错误,所以我认为第一步是在这里报告它。可能有人会修复它或提示您解决方法。

在谷歌搜索主题时,我发现了这个get_keyboard_height() 实现。由于它是android模块的一部分,因此请尝试将此配方添加到您的构建器要求中。它可能会修复Window.keyboard_height或仅提供get_keyboard_height()手动获取正确高点的功能。

于 2018-01-20T17:37:31.040 回答