当我点击文本字段时,会出现一个键盘。但是,这会向上滑动窗口的所有内容。你可以让键盘在没有滚动内容的情况下翻过窗口吗?
答案 0 :(得分:2)
我强烈建议您阅读有关Handling Input Method Visibility的官方Android文档,其中提及:
当输入法出现在屏幕上时,它会减少数量 可用于应用UI的空间。系统做出决定 它应该如何调整UI的可见部分,但它可能不会 修正它。为了确保应用程序的最佳行为,您应该这样做 指定您希望系统如何在剩余的UI中显示您的UI 空间。
换句话说,当键盘出现时,它可以改变视图的外观,具体取决于许多因素。
其中一个因素是windowSoftInputMode
,如下所述:
这些是windowSoftInputMode
...
以下选项仅在窗口处于焦点时弹出或不弹出键盘时影响,而不影响视图中的项目:
以下选项是您最感兴趣的选项,因为它们与视图在键盘打开时的反应方式有关:
注意你可以组合这样的选项:
win.windowSoftInputMode = Ti.UI.Android.SOFT_INPUT_STATE_ALWAYS_VISIBLE | Ti.UI.Android.SOFT_INPUT_ADJUST_PAN;
所有商品被移动的原因是因为窗口正在使用:SOFT_INPUT_ADJUST_RESIZE
并且正在使用百分比垂直放置某些内容。例如:
<View height="100%">
<Label top="10">Top label</Label>
<Label>Centre label</Label>
<Label bottom="10">Bottom label</Label>
</View>
这意味着当键盘上升时,视图的整体高度会降低,从而将所有项目向上移动。
此问题有两个主要解决方案。
解决方案1
使窗口使用SOFT_INPUT_ADJUST_PAN
。这不会降低应用程序的整体高度,而是平移到屏幕的相关部分。因此,这应该会阻止所有物品向上移动。
解决方案2 确保项目的位置不依赖于设备高度(可以更改)。
e.g。
<View height="500px">
...
</View>
OR
<View height="Titanium.UI.SIZE">
....
</View>
这样,当键盘上升时,视图的高度不会降低,键盘只会覆盖内容而不是向上移动项目。但是,如果设备高度小于500px,您现在冒着从屏幕上裁剪掉某些东西的风险。此外,当键盘启动时,您的空间更小,这意味着可以裁掉更多东西。
对此的解决方案是使用scrollable view。 e.g:
<ScrollableView height="500px">
...
</ScrollableView>
或
<ScrollableView height="Titanium.UI.SIZE">
...
</ScrollableView>
现在,如果设备屏幕太小,用户仍然可以滚动查看屏幕的其他部分。用户甚至可以在键盘启动时滚动。