Android 安卓软键盘:如何操作键盘开/关视图

Android 安卓软键盘:如何操作键盘开/关视图,android,android-softkeyboard,Android,Android Softkeyboard,我有一个布局,上面有一个大的EditText视图,底部有一堆按钮。使用“调整大小”(adjust_resize)激活/禁用ime时,编辑文本将收缩和展开。底部的按钮被推到ime上方 我想在ime显示时隐藏这些按钮,以便为EditText视图提供足够的空间 到目前为止,我尝试了以下方法: 子类EditText,并为活动提供了在视图的OnSizeChanged上注册回调的选项 使用此回调将按钮(实际上是布局容器)的可见性更改为“消失” 这可以正常工作,并且在ime弹出时隐藏按钮。 但是,Edit

我有一个布局,上面有一个大的EditText视图,底部有一堆按钮。使用“调整大小”(adjust_resize)激活/禁用ime时,编辑文本将收缩和展开。底部的按钮被推到ime上方

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

到目前为止,我尝试了以下方法:

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

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

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

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

你有什么办法让它发挥作用吗? 或者更好的是,有没有更简单的解决方案来满足我的需求

谢谢


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

您是否尝试调用
myView.invalidade()

我使用的是GONE属性,但后来改为
button.setVisibility(View.INVISIBLE)

在“调整大小”按钮上,您需要再次检查键盘何时关闭并再次显示按钮。

您是否尝试调用
myView.invalidade()

我使用的是GONE属性,但后来改为
button.setVisibility(View.INVISIBLE)

在adjust_resize(调整大小)上,您需要在键盘关闭后再次检查并再次显示按钮。

我通过稍微更改上述方法来实现这一点:

  • 使用FrameLayout包装整个布局

  • 子类化FrameLayout,并为活动提供在布局的OnMeasure上注册回调的选项

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

我仍然很高兴听到更简单的解决方案,特别是在计算键盘当前是否可见方面。
(dumpsys窗口显示此信息。我们可以轻松获取它吗?

我通过稍微更改上述方法来实现此目的:

  • 使用FrameLayout包装整个布局

  • 子类化FrameLayout,并为活动提供在布局的OnMeasure上注册回调的选项

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

我仍然很高兴听到更简单的解决方案,特别是在计算键盘当前是否可见方面。
(dumpsys窗口显示此信息。我们可以轻松获取吗?

谢谢@Eduardo。我已尝试myView.invalidade()。不走运。我需要使用GONE,因为我想要按钮占用的空间。我已经检查了可见性,并在键盘关闭后将其更改为可见。我已经描述了结果。再次感谢。谢谢@Eduardo。我已尝试myView.invalidade()。不走运。我需要使用GONE,因为我想要按钮占用的空间。我已经检查了可见性,并在键盘关闭后将其更改为可见。我已经描述了结果。再次感谢。