python - Kivy (Android):ScrollView.scroll_to() 不显示键盘隐藏的小部件
问题描述
当用户单击我的应用程序上的小部件时,如果小部件太低,出现的键盘可以将其隐藏。我试图ScrollView.scroll_to()
要求将注意力集中在小部件上,它可以工作,但它没有在等式中使用键盘。
所以小部件被键盘隐藏了。我不知道这样的功能是否已经存在。
If widget.hiddedByKeyboard():
widget.show_taking_consideration_of_the_keyboard()
还有一个小部件在末尾的问题Screen
,如果我们尝试通过向下滚动来显示它们,ScrollView
即使这样会隐藏小部件,也会尝试再次向上。
解决方案
啊经典,键盘涵盖了小部件问题。我遇到了这个,这是我为解决它所做的:
在我的 KV 文件中,我有这样的东西:
<MainWindow>:
... [A BUNCH OF WIDGETS] ...
ScrollView:
BoxLayout:
orientation: 'vertical'
size_hint: 1, None
height: self.minimum_height
... [A BUNCH OF WIDGETS] ...
Widget: # The important widget
id: buffer
size_hint: (1, None)
height: root.buffer
我在 ScrollView 的底部添加了一个空白小部件,其高度由顶级小部件(窗口 - 一个 BoxLayout)中的 NumericProperty 定义。
在 Python 文件中,我有:
from kivy.core.window import Window # Need to import this
class MainWindow(BoxLayout):
buffer = NumericProperty()
然后当我请求键盘时,我确保设置buffer = Window.keyboard_height
. 这将空白 Widget 的高度调整为键盘的高度,实质上为键盘创造了额外的空间。这为用户提供了额外的滚动空间来定位键盘。
您可以将此实现与该ScrollView.scroll_to()
方法相结合,以创建一个非常好的效果。ScrollView.scroll_to(text_input_widget)
当用户单击 TextInput 时基本上通过。这将自动向下滚动 ScrollView,使 TextInput 位于顶部,键盘位于其下方。
这可能不是最干净的实现(我现在可能会做得更好),但是创建一个大小为键盘高度的空白 Widget 的概念是相同的。
推荐阅读
- reactjs - 如何使用 React 在 Apollo 客户端中交互 Query 和 Mutation
- c - C 代码编译没有错误但运行不正确(命令行参数和指针)
- github - 如何将来自 github 的代码与 Visual Studio 一起使用?
- python - 如何将 feed_dict 与 Tensorflow 层的输出一起使用?
- json - 在 Google 地球引擎中:最有效地减少 ImageCollection 中每个图像的区域,将均值保存为特征属性?
- python-3.x - 如何在 python 3.7 中创建新对象时使用“类型提示 - PEP 484”以便能够在 pycharm 2019.2.4 中完成代码
- pygame - Pygame可调整大小的窗口,表面没有适当更新
- php - 测验:无法用 rand() 得到正确答案
- blazor - Blazor InputText 在移动 Chrome 版本中抑制 AutoCapitalize
- python - 如何从其他两个字典创建字典