我有一个布局,顶部有一个大的EditText视图,底部有一堆按钮。当使用adjust_resize激活/停用ime时,EditText会缩小和展开。底部的按钮被推到了ime上方。
我想在ime显示时隐藏这些按钮,为EditText视图提供足够的空间。
到目前为止,我尝试了以下内容:
子类化EditText并为活动提供了在视图的OnSizeChanged上注册回调的选项。
使用此回调将按钮(实际上是布局容器)的可见性更改为GONE。
这项工作正常,并在ime弹出时隐藏按钮。 但是,EditText不会扩展到新的可用空间。 此外,当关闭ime时,EditText字段现在比原来大,在屏幕外推(现在显示)按钮。
我还应该补充一点,当在视图中键入第一个字母,并且ime显示单词选项时,屏幕会重新绘制,EditText会填充空白区域。
有关如何使其发挥作用的任何想法? 或者甚至更好,我的要求是否有更简单的解决方案?
...谢谢
注意:在我看来,滚动不是一个好选择。
答案 0 :(得分:1)
我通过改变上面的方法来实现这一点:
使用FrameLayout
子类化FrameLayout并为活动提供了在布局的OnMeasure上注册回调的选项
这使得活动有机会在测量视图之前改变视图的可见性。
我仍然很高兴听到更简单的解决方案,特别是在确定键盘当前是否可见方面。 (dumpsys窗口显示了这些信息。我们可以轻松搞定吗?)
答案 1 :(得分:0)
您是否尝试过致电myView.invalidade()
?
我使用的是GONE属性,但之后更改为button.setVisibility(View.INVISIBLE);
,因为我的屏幕上没有任何其他内容。
,您需要在键盘退出时再次检查并再次显示按钮。