Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何动态更新编辑器操作按钮显示?_Android_Keyboard_Key_Action - Fatal编程技术网

Android 如何动态更新编辑器操作按钮显示?

Android 如何动态更新编辑器操作按钮显示?,android,keyboard,key,action,Android,Keyboard,Key,Action,我的问题是:如何在运行中更新软键盘的操作按钮的显示 另一篇文章似乎是关于在显示键盘之前更改编辑器操作的:。我想在显示软键盘操作按钮时更改它 我取得了部分成功: -我可以使用以下命令更改操作:editText.setImeOptions(EditorInfo.IME\u action\u GO); -我还可以使用:InputMethodManager.RestarInput(editText)重新绘制键盘; 我使用TextWatcher.afterTextChanged执行此操作。 -然而,我有一

我的问题是:如何在运行中更新软键盘的操作按钮的显示

另一篇文章似乎是关于在显示键盘之前更改编辑器操作的:。我想在显示软键盘操作按钮时更改它

我取得了部分成功: -我可以使用以下命令更改操作:editText.setImeOptions(EditorInfo.IME\u action\u GO); -我还可以使用:InputMethodManager.RestarInput(editText)重新绘制键盘; 我使用TextWatcher.afterTextChanged执行此操作。 -然而,我有一个问题。如果我按了一个键,键盘会显示哪个键被按下。但是当我调用restartInput(…)时,这也隐藏了显示按下哪个键的视图。对我来说,这似乎是正常的行为,但我需要一个解决办法

扩展EditText并重写onKeyUp不是一个好主意,请参阅:

KeyboardView类正是我所需要的(invalidateKey),但我认为只有在创建自己的输入法时才能访问它


还有谁有更好的主意吗

当你描述你想做什么时,请尽量说得更具体些。。。我需要多次阅读你的帖子才能理解你的要求

所以你们要做的是如何对键盘上的任何按键做出反应,并在键盘上的动作键中显示有关它的信息。 如果这不是你的目标,请解释更多

如果是的话,那么我想您需要使用额外的EditText(不可见)let调用et0。在编辑文本中完成插入字母或通过ContextChanged定义的任何图案后,将焦点更改为et0。。因此,您可以更改actionKey。。然后将焦点发送回您的编辑文本。。因此,您可以使用线程或timertask,或任何方式来管理从et0到et0的临时焦点更改。。 这里没有必要重新启动输入


希望这对您有所帮助。

在调用重画代码之前,您是否尝试过动态更改/system/usr/keychars/default.kcm?(根据Android版本的不同,文件名可能会有所不同)


在这里,您不仅可以设置键输出字符,还可以设置键显示值。我还没有试过,它可能会导致延迟,但值得一试。

这对您应该非常有用

EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
        Log.i("Key:", cs.toString()); 
    }
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
});

使视图无效本身不起作用?欢迎继续,在这里,解释为什么要使用您的解决方案,而不仅仅是如何使用,这是一个很好的实践。这将使你的答案更有价值,并有助于进一步的读者更好地理解你是如何做到这一点的。我还建议您查看我们的常见问题:。