如何即时更新编辑器操作按钮显示?

Posted

技术标签:

【中文标题】如何即时更新编辑器操作按钮显示?【英文标题】:How can I update the editor action button display on the fly? 【发布时间】:2011-06-04 23:57:30 【问题描述】:

我的问题是:如何即时更新软键盘操作按钮的显示?

另一个帖子似乎是关于在显示键盘之前更改编辑器操作:android: Can't figure how to use setImeActionLabel。我想在显示时更改软键盘操作按钮。

我已经部分成功了: - 我可以使用以下方法更改操作:editText.setImeOptions(EditorInfo.IME_ACTION_GO); - 我还可以使用以下方法重绘键盘:InputMethodManager.restartInput(editText); 我使用 TextWatcher.afterTextChanged 执行此操作。 - 但是,我有一个问题。如果我按下一个键,最重要的是键盘会显示按下了哪个键。但是当我调用restartInput(...) 时,这也会隐藏显示已按下哪个键的视图。这对我来说似乎是正常的行为,但我需要一种解决方法。

扩展 EditText 并覆盖 onKeyUp 不是一个好主意,请参阅:https://groups.google.com/forum/?fromgroups#!topic/android-developers/RIxGfx5qOjM。

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

还有其他人有更好的想法吗?

【问题讨论】:

无效视图本身不起作用? 【参考方案1】:

这对你应该很有用。

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)  
);

【讨论】:

欢迎您,在这里,解释为什么要使用您的解决方案而不只是如何使用是一个很好的做法。这将使您的答案更有价值,并帮助进一步的读者更好地理解您是如何做到的。我还建议您查看我们的常见问题解答:***.com/faq。【参考方案2】:

在调用重绘代码之前,您是否尝试过即时更改 /system/usr/keychars/default.kcm? (文件名可能因 Android 版本而异)。

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

【讨论】:

【参考方案3】:

当您描述您想要做什么时,请尝试更具体...我需要多次阅读您的帖子才能理解您的要求..

因此,您要做的是如何对键盘上按下的任何键做出反应,并在键盘上的操作键中显示有关它的信息。 如果那不是您的目标,请解释更多...

如果是,那么我猜你需要使用额外的 EditText(不可见)让我们调用 et0。在完成插入一个字母或您通过 ontextchanged 在您的编辑文本中定义的任何模式后,将焦点更改为 et0.. 这样您就可以更改 actionKey.. 然后将焦点发送回您的 editText .. 这样您就可以线程或计时器任务,或任何方式来管理这种临时改变焦点进出 et0 .. 这里不需要重启输入。

希望对你有所帮助..

【讨论】:

以上是关于如何即时更新编辑器操作按钮显示?的主要内容,如果未能解决你的问题,请参考以下文章

mfc EDIT编辑框即时在for循环中更新

即时插入/编辑

如何在单击按钮操作时更改图像

即时更新 UIMenuController

如何使用 Rails 上的按钮更新所有用户的数据?

mfc c++ 从编辑控件更新文本文件