如何从本机代码强制打开Android软键盘?

如何从本机代码强制打开Android软键盘?,第1张

概述我有一个游戏,它使用来自C的Java回调来强制打开用户触摸屏幕时的软键盘.Java代码就是这样的:this._inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);这已经好了一段时间,但最近我们收到一些摩托罗拉Droid用户的抱怨,软键盘无法为他们打开.由于我们最近

我有一个游戏,它使用来自C的Java回调来强制打开用户触摸屏幕时的软键盘. Java代码就是这样的:

this._inputMethodManager.toggleSoftinput(inputMethodManager.SHOW_FORCED, 0);

这已经好了一段时间,但最近我们收到一些摩托罗拉DroID用户的抱怨,软键盘无法为他们打开.由于我们最近才开始接受这些投诉,而且我认为这是对这些设备进行某种更新.

有没有更好的方法可以强制键盘打开?我在网上找到的所有链接都谈到了使用文本框控件等,但我的应用程序主要是C并且根本不使用标准控件.

解决方法:

我不知道这是否与您的问题有关,但是当设备有时会“不同步”并且在我想要显示时隐藏,反之亦然时,我只使用inputMethodManager.toggleSoftinput()遇到了一些问题.

我已经取得了一些成功,因为虽然IMM.showSoftinput()不会显示键盘,IMM.hIDeSoftinputFromWindow()将可靠地关闭一个,所以当我想显示键盘时,我现在调用IMM.hIDeSoftinputFromWindow ()后跟IMM.toggleSoftinput(),并使用IMM.hIDeSoftinputFromWindow()自行隐藏一个.

[一天后……]

昨天写上面的内容让我重新思考我是如何处理软键盘的(我的意思是,showSoftinput()确实有效,而不是我们预期的方式)所以这是一个更好的方法:

首先,您需要设置视图,以便AndroID知道它可以有一个软键盘 – 在inputMethodManager的文档中有描述.在我的情况下,我有一个从GLSurfaceVIEw派生的视图,所以我添加了:

setFocusable(true);setFocusableIntouchMode(true);

到构造函数,然后是以下2个覆盖:

@OverrIDepublic inputConnection onCreateinputConnection(EditorInfo outAttrs){    outAttrs.actionLabel = "";    outAttrs.hintText = "";    outAttrs.initialCapsMode = 0;    outAttrs.initialSelEnd = outAttrs.initialSelStart = -1;    outAttrs.label = "";    outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI;            outAttrs.inputType = inputType.TYPE_NulL;            return  new BaseinputConnection(this, false);       }     @OverrIDepublic boolean onCheckIsTextEditor (){    return true;}

现在我可以用键盘显示:

inputMethodManager mgr = (inputMethodManager)mActivity.getSystemService(Context.input_METHOD_SERVICE); mgr.showSoftinput(mVIEw, 0);

并通过视图的onKeyUp()和onKeyDown()方法报告按键.

隐藏它仍然使用hIDeSoftinputFromWindow()完成

总结

以上是内存溢出为你收集整理的如何从本机代码强制打开Android软键盘?全部内容,希望文章能够帮你解决如何从本机代码强制打开Android软键盘?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存