键盘出现时隐藏元素

时间:2016-09-21 12:17:30

标签: android

如果您查看IFTTTTumblr的工作方式,您会看到当您点击登录表单输入并显示键盘时,徽标将被移除,并带有很酷的动画。

我想做类似的事情,所以我已经搜索了一些关于检测软键盘显示/隐藏事件的信息,但我发现的解决方案都没有(例如thisthis)可靠。

我该如何实现这种行为?

我的登录界面有些拥挤,所以我需要在键盘出现时隐藏元素,否则它们不适合所有可能的屏幕配置。

1 个答案:

答案 0 :(得分:1)

我有同样的问题。

在我的应用中,主屏幕有一个EditText用于搜索以及一个漂亮的大徽标。当用户按下EditText输入搜索字词时,软键盘会弹出并压缩布局,以致使用adjustResize看起来与使用adjustPan一样糟糕。

在做了一些关于如何告诉键盘显示和阅读this rant from Dianne Hackborn告诉我们键盘出现时我们真的不应该关心的研究后,我决定重新考虑这个并将其视为布局问题。只有当布局的高度低于某个阈值时才会出现问题。

我为主布局创建了一个子类,其中包含onLayout()的覆盖,当a)布局高度从低于阈值变为高于阈值并且b)高度从高于阈值到高于阈值时触发回调事件阈。根据它的走向,我会启动动画来移除徽标或重新显示它。

我不会在这里发布这些代码,因为如果我现在这样做,我会使用ViewTreeObserver.OnGlobalLayoutListener找出布局何时发生变化。它与this answer最相似,除了不测试高度变化量,我会设置一定的阈值并在高度超过阈值时运行相应的动画。