怎么捕捉 虚拟键盘显示/隐藏"?Android中的事件?
本教程将介绍如何捕捉“虚拟键盘显示/隐藏"?Android中的事件?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我想根据是否显示虚拟键盘来更改布局.我搜索了 API 和各种博客,但似乎找不到任何有用的东西.
有可能吗?
谢谢!
推荐答案
2020年更新
这现在是可能的:
在 Android 11 上,您可以这样做
view.setWindowInsetsAnimationCallback(object : WindowInsetsAnimation.Callback {
override fun onEnd(animation: WindowInsetsAnimation) {
super.onEnd(animation)
val showingKeyboard = view.rootWindowInsets.isVisible(WindowInsets.Type.ime())
// now use the boolean for something
}
})
还可以听键盘显示/隐藏的动画,做相应的过渡.
我推荐阅读Android 11 预览版 和相应的文档
Android 11 之前
但是,这项工作尚未在 Compat
版本中提供,因此您需要求助于 hack.
您可以获得窗口插图,如果底部插图大于您认为相当好的某个值(通过实验),您可以认为这是显示键盘.这不是很好,在某些情况下可能会失败,但没有框架支持.
对于这个确切的问题 https://stackoverflow.com/a/36259261/372076,这是一个很好的答案.或者,这里有一个页面提供了一些不同的方法来实现这个 pre Android 11:
此解决方案不适用于软键盘和onConfigurationChanged
不会被调用软(虚拟)键盘.
您必须自己处理配置更改.
示例:
// from the link above
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks whether a hardware keyboard is available
if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show();
} else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show();
}
}
然后只需更改某些视图的可见性、更新字段并更改布局文件.
好了关于怎么捕捉“虚拟键盘显示/隐藏"?Android中的事件?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。