2016-09-21 207 views
0

如果您看一下IFTTTTumblr的工作方式,您将看到当您单击登录表单输入并且键盘显示时,徽标将被移除,并显示一个很酷的动画。我想要做类似的事情,所以我已经搜索了一些关于检测软键盘显示/隐藏事件的信息,但是我发现的解决方案(如thisthis)都不可靠。当键盘显示时隐藏元素

我该如何实现这种行为?

我的登录屏幕有点拥挤,所以我需要隐藏元素,当键盘显示或否则他们不适合所有可能的屏幕配置。

回答

1

我有这个相同的问题。

在我的应用程序,主屏幕有一个EditText搜索以及一个不错的大标志。当用户按EditText输入搜索词时,软键盘将弹出并压缩布局,使得使用adjustResize看起来与使用adjustPan一样差。

当键盘显示了做就怎么告诉了一些研究和阅读this rant from Dianne Hackborn告诉我们,我们真的不应该护理当键盘显示出来,我决定重新考虑这一点,并把它看作是一个布局问题后。只有当布局的高度低于某个阈值时,我才有问题。

我为主布局创建了一个子类,覆盖onLayout(),当a)布局高度从低于阈值到高于阈值时,触发回调事件,以及b)高度从高于阈值到低于阈值。根据它的走向,我会开始播放动画,以移除徽标或重新显示它。

我不会在这里发布该代码,因为如果我现在要做,我只需要使用ViewTreeObserver.OnGlobalLayoutListener来了解布局何时更改。它与this answer最相似,不同之处在于不是测试高度变化量,而是设置一定的阈值并在高度超过阈值时运行适当的动画。

+0

你说得对,我以错误的方式面对问题。键盘是无关紧要的,是重要的布局大小。这让人大开眼界! –