使用SDL2在软键盘上调整Kivy Android App中的窗口

时间:2018-01-19 21:26:31

标签: python kivy window-resize pysdl2

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

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

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

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

引用此问题并给出一个工作示例的唯一其他堆栈流使用了调整大小模式,该模式在使用SDL2时无效。

Properly resize main kivy window when soft keyboard appears on android

是否有完成此功能的解决方案或与SDL2不同的提供商在Android上运行良好?

1 个答案:

答案 0 :(得分:0)

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

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