【问题标题】:Hide elements when keyboard shows up键盘出现时隐藏元素
【发布时间】:2016-09-21 12:17:29
【问题描述】:

如果您查看IFTTT 和Tumblr 的工作原理,您会发现当您单击登录表单输入并显示键盘时,徽标会以很酷的动画移除。

我想做类似的事情,所以我搜索了一些关于检测软键盘显示/隐藏事件的方法,但我找到的解决方案(如this 或this)都不可靠。

我怎样才能实现这种行为?

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

【问题讨论】:

    标签: android


    【解决方案1】:

    我遇到了同样的问题。

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

    在对如何判断键盘何时出现进行了一些研究并阅读了 this rant from Dianne Hackborn 告诉我们当键盘出现时我们真的不应该关心之后,我决定重新考虑这一点并看看在它作为一个布局问题。只有当布局的高度低于某个阈值时,我才会遇到问题。

    我为主布局创建了一个子类,并覆盖了onLayout(),当 a) 布局高度从低于阈值变为高于阈值和 b) 高度从高于阈值变为低于阈值时,它将触发回调事件。根据它采用的方式,我会启动一个动画来删除徽标或重新显示它。

    我不会在这里发布该代码,因为如果我现在就发布,我会使用ViewTreeObserver.OnGlobalLayoutListener 来找出布局何时更改。它与this answer 最相似,只是我不会测试高度变化量,而是设置某个阈值并在高度超过阈值时运行适当的动画。

    【讨论】:

    • 你是对的,我以错误的方式面对问题。键盘无关紧要,重要的是布局大小。这让我大开眼界!
    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2022-08-03
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多