关于弹出和隐藏输入法

编程入门 行业动态 更新时间:2024-10-25 12:29:00

关于<a href=https://www.elefans.com/category/jswz/34/1771144.html style=弹出和隐藏输入法"/>

关于弹出和隐藏输入法

关于弹出和隐藏输入法

最近做的手机遥控器APP,需要在机顶盒端弹出输入法时,在该APP内时,手机也能够弹出输入法,达到同步输入的效果,当然这个是如何实现的,是我师父修改了Android的framework层的InputMethodManager实现的,是用广播实现的,暂时还没有时间去看下他修改的源码,完成这个APP之后一定要去好好看一下,好了回归正题,输入法的弹出和隐藏,主要的就是借助Android提供的InputMethodManager类来实现的,在一开始的时候看了一下API各种尝试就是不能达到,输入法自动弹出,在关闭当前界面时,输入法自动关闭,满足了自动弹出,就满足不了自动隐藏,的确有些崩溃,再经历了自己的各种尝试之后我就上博客上来学习了,看到了ccpat这个博主写的一篇《android手动显示和隐藏输入法》结合API的对InputMethodManager类的一些参数和方法的解释,总算是给整明白了,还有,这位大神对这个解释的太清楚了,有兴趣的可以去看看,我的总结基本上也是照抄他的,哈哈哈哈。
这里是大神写的原文地址
我就直接捡结果说吧,首先InputMethodManager怎么使用

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

然后性价比最高的弹出软件键盘的方法如下。

public void showSoftInput() {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {// view就是你设置的EditText或者其他控件view.requestFocus();imm.showSoftInput(view, 0);}
}

如果你的布局中没有任何控件,还可以采用如下方式弹出软键盘

imm.toggleSoftInput(0, 0);

这个方法的原型是下面这样的
public void toggleSoftInput(int showFlags, int hideFlags);
就是软键盘是隐藏的时候弹出,是弹出的时候隐藏。
当然在API上是有好几个参数弹出软键盘的,但是也就是showSoftInput这个方法的第二个参数, 有SHOW_IMPLICIT, SHOW_FORCED,0,当然0绝对是最直接并且约束条件最少的一个标志。在我说的那篇博客中那位大神画了一个表格很清晰的展现了几种标志在显示和隐藏软键盘时差异,他写的的确是太好了,所以我写的基本只能照搬了。结合我在实际使用时遇到的坑吧,不过其实试错也是一个加深记忆的过程,所以大家如果能够自己先好好摸索是最好的,直接看博客的话,毕竟是别人咀嚼过的东西。
然后是隐藏软键盘的最佳方法:

//隐藏键盘方法原型
public boolean hideSoftInputFromWindow(IBinder windowToken, int flags);
public void showSoftInput() {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {// view就是你设置的EditText或者其他控件view.hideSoftInputFromWindow(view.getWindowToken(),0);}
}

  最后在所有使用弹出软键盘的方法的时候一定要等待界面绘制完成,在所有使用弹出软键盘的方法的时候一定要等待界面绘制完成,反正我就是被这个给坑惨了,说到底还是源码看的少了,具体办法可以在前文创建软键盘的方法放在一个延时器中执行,延时个50ms应该足够了。
第二篇博客,第一次用MarkDown写博客,感觉挺爽的。

更多推荐

关于弹出和隐藏输入法

本文发布于:2023-06-22 05:11:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/828208.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:弹出   输入法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!