Listview 当键盘可见时,Android需要滚动页面

Listview 当键盘可见时,Android需要滚动页面,listview,titanium,appcelerator-titanium,Listview,Titanium,Appcelerator Titanium,当我点击文本字段时,会出现一个键盘。但是,这会向上滑动窗口的所有内容。你能让键盘在不滚动内容的情况下滚动窗口吗?Background 我强烈建议阅读官方Android文档,其中提到: 当输入法出现在屏幕上时,它会减少输入量 应用程序UI的可用空间。系统会做出一个关于 它应该如何调整UI的可见部分,但可能不会 把它做好。为了确保应用程序的最佳性能,您应该 指定您希望系统在其余窗口中显示UI的方式 空间 换句话说,当键盘打开时,它可能会改变视图的外观,这取决于许多因素 其中一个因素是windowSo

当我点击文本字段时,会出现一个键盘。但是,这会向上滑动窗口的所有内容。你能让键盘在不滚动内容的情况下滚动窗口吗?

Background 我强烈建议阅读官方Android文档,其中提到:

当输入法出现在屏幕上时,它会减少输入量 应用程序UI的可用空间。系统会做出一个关于 它应该如何调整UI的可见部分,但可能不会 把它做好。为了确保应用程序的最佳性能,您应该 指定您希望系统在其余窗口中显示UI的方式 空间

换句话说,当键盘打开时,它可能会改变视图的外观,这取决于许多因素

其中一个因素是
windowSoftInputMode
,如下所述:

这些是
windowSoftInputMode
的选项

以下选项仅在窗口处于焦点而不是视图中的项目时影响键盘是否弹出:

  • 软输入\状态\始终隐藏:当前重量级窗口接收焦点时始终隐藏软输入区域(即软件键盘)
  • 软输入\状态\始终可见:当当前重量级窗口接收到焦点时,始终显示软输入区域(即软件键盘)
  • 软输入\状态\隐藏:当当前重量级窗口接收到焦点时,尝试隐藏软输入区域(即软件键盘)。基本上,当有输入时,当窗口打开时,键盘不会自动弹出
  • 软输入\状态\可见:当当前重量级窗口接收到焦点时,尝试显示软输入区域(即软件键盘)
  • 软输入\状态\未指定:使用系统默认行为确定当前重量级窗口接收焦点时是否显示软输入区域(即软件键盘)
以下选项是您最感兴趣的选项,因为它们与打开键盘时视图的反应有关:

  • 软输入\调整\平移:在显示输入法(即软件键盘)时平移当前重量级窗口,以确保其内容不被遮挡
  • SOFT\u INPUT\u ADJUST\u RESIZE:显示输入法(即软件键盘)时,调整当前重量级窗口的大小,以确保其内容不被遮挡
  • 软输入\调整\未指定:使用系统默认行为确定当前重量级窗口接收焦点时软输入区域(即软件键盘)的适应方式(默认)取决于AndroidManifest.xml设置(如果已定义)或系统默认设置(否则),以确定如何在可见时容纳软键盘
注意:您可以组合如下选项:

win.windowSoftInputMode = Ti.UI.Android.SOFT_INPUT_STATE_ALWAYS_VISIBLE | Ti.UI.Android.SOFT_INPUT_ADJUST_PAN;
项目被转移的原因 所有项目被移动的原因是,窗口正在使用:
SOFT\u INPUT\u ADJUST\u RESIZE
,并且某些项目正在使用百分比垂直定位。例如:

<View height="100%">
    <Label top="10">Top label</Label>
    <Label>Centre label</Label>
    <Label bottom="10">Bottom label</Label>
</View>


....
这样,当键盘向上移动时,视图的高度不会降低,而键盘只是在内容上移动,而不是向上移动项目。但是,如果设备高度低于500px,您现在可能会有某些内容被截取的风险。另外,当键盘打开时,你的空间就更少了,这意味着可以裁掉更多的东西

解决这个问题的一个办法是使用。e、 g:


...


...

现在,如果设备屏幕太小,用户仍然可以滚动查看屏幕的其他部分。用户甚至可以在键盘打开时滚动。

我在窗口内有一个列表视图,我必须给出如上所述的高度。您能在问题中显示一个MCV()代码,以便我提出解决方案吗。还要注意,我对这个问题做了大量的修改。
<View height="500px">
    ...
</View>
<View height="Titanium.UI.SIZE">
    ....
</View>
<ScrollableView height="500px">
    ...
</ScrollableView>
<ScrollableView height="Titanium.UI.SIZE">
    ...
</ScrollableView>