Android软键盘:如何操作键盘上的视图开/关

时间:2010-08-04 20:53:51

标签: android android-softkeyboard

我有一个布局,顶部有一个大的EditText视图,底部有一堆按钮。当使用adjust_resize激活/停用ime时,EditText会缩小和展开。底部的按钮被推到了ime上方。

我想在ime显示时隐藏这些按钮,为EditText视图提供足够的空间。

到目前为止,我尝试了以下内容:

  • 子类化EditText并为活动提供了在视图的OnSizeChanged上注册回调的选项。

  • 使用此回调将按钮(实际上是布局容器)的可见性更改为GONE。

这项工作正常,并在ime弹出时隐藏按钮。 但是,EditText不会扩展到新的可用空间。 此外,当关闭ime时,EditText字段现在比原来大,在屏幕外推(现在显示)按钮。

我还应该补充一点,当在视图中键入第一个字母,并且ime显示单词选项时,屏幕会重新绘制,EditText会填充空白区域。

有关如何使其发挥作用的任何想法? 或者甚至更好,我的要求是否有更简单的解决方案?

...谢谢

注意:在我看来,滚动不是一个好选择。

2 个答案:

答案 0 :(得分:1)

我通过改变上面的方法来实现这一点:

  • 使用FrameLayout

  • 包裹整个布局
  • 子类化FrameLayout并为活动提供了在布局的OnMeasure上注册回调的选项

这使得活动有机会在测量视图之前改变视图的可见性。

我仍然很高兴听到更简单的解决方案,特别是在确定键盘当前是否可见方面。 (dumpsys窗口显示了这些信息。我们可以轻松搞定吗?)

答案 1 :(得分:0)

您是否尝试过致电myView.invalidade()

我使用的是GONE属性,但之后更改为button.setVisibility(View.INVISIBLE);,因为我的屏幕上没有任何其他内容。

在adjust_resize上

,您需要在键盘退出时再次检查并再次显示按钮。