【问题标题】:android:windowSoftInputMode="adjustResize" when i've already have ScrollView in the activityandroid:windowSoftInputMode="adjustResize" 当我在活动中已经有 ScrollView
【发布时间】:2012-07-05 19:49:40
【问题描述】:

我有一个具有这种布局结构的活动: 线性布局 -> 滚动视图 -> 表格布局

在 TableLayout 下面我有 EditText,我想在键盘处于活动状态时向上滚动。 因此,根据我所做的一些阅读,我补充说:

android:windowSoftInputMode="adjustResize"

到AndroidManifest.xml,到相关的activity,并在activity.xml文件中添加了一个ScrollView包装器,所以现在activity的Layouts结构如下: ScrollView -> LinearLayout -> ScrollView -> TableLayout

问题:内部的 ScrollView 现在不工作了……我猜想包裹的 ScrollView 在被触摸时正在控制……

我该如何解决这个问题?

任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 尽量避免滚动视图位于另一个滚动视图中的情况。您可以捕获它,但这不是必需的。我得到了一些问题。但 linearlayout>scrollview>tablelayout 足以解决您的问题。内部滚动视图会自动调整到正确的大小。我还建议在 inputMode 选项中添加“stateVisible”
  • 但是如果我不使用 ScrollView 包装整个 Activity,那么当点击 edittext 时 Activity 将不会被调整大小......还是我错了?我试过没有它,Activity 没有用键盘向上滚动 - 键盘刚刚覆盖了 EditText,再次......

标签: android-layout


【解决方案1】:

我遇到了同样的问题,虚拟键盘在我的屏幕上隐藏了 EditTexts。 我在清单文件中为活动标签引入了以下属性:

 android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"

我还需要在活动的 OnCreate 函数中添加以下代码:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

这解决了问题,并且在所有分辨率模拟器和三星设备上都运行良好。不过,它在 Google Nexus S 设备上确实失败了,我可以再次看到隐藏 EditTexts 的虚拟键盘的相同问题。

【讨论】:

  • 这至少有点错误。根据the documentation for windowSoftInputMode,你不能设置多个adjust参数(反正也没有意义)。
  • 文档并没有说你不能设置多个值,只是结果是未定义的,所以有点破解。
  • 经过数小时的搜索,这解决了我的EditText 输入延迟问题(最多延迟 5 秒)。谢谢。
  • 似乎这与仅使用 android:windowSoftInputMode="adjustPan"
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多