【问题标题】:android input method problems安卓输入法问题
【发布时间】:2011-07-23 09:28:56
【问题描述】:

关于android的几个问题:

是否可以替换默认键盘中的键?例如,是否可以将数字键盘中的点替换为逗号?

我编写了一个非常简单的 IME,但我无法将其设置为 EditText。我想要的是将我的 EditText 之一设置为使用我默认编写的 IME,而不是默认的 LatinIME。那可能吗 ? inputMethod 属性如何工作?我设置了 IME 的完全限定类名,但它引发了 class not found 异常。

谢谢。

【问题讨论】:

    标签: android ime android-input-method


    【解决方案1】:
    Is it possible to replace the keys in default keyboards ? 
    

    你没有。用户可以控制他们的设备,包括使用什么键盘。

    但是你可以尝试做一些输入法

    阅读本教程:Creating an Input Method

    克隆这个仓库:LatinIME

    如果您需要替换一个字符,您可以覆盖edittext的文本更改侦听器,并检查每个输入的字符,如果用户输入了点,则将其替换为逗号

    editText.addTextChangedListener(new TextWatcher(){
            public void afterTextChanged(Editable s) {
               //Check if s contains dot and replace it with comma
            }
            public void beforeTextChanged(CharSequence s, int start, int count, int after){}
            public void onTextChanged(CharSequence s, int start, int before, int count){}
        });  
    

    但是这个方法会执行 EditText 中的每个按键。

    【讨论】:

    • 这就是我们现在正在做的事情,但这并没有多大帮助,因为键盘中的键仍然相同(在我们的例子中,点不是逗号)。我尝试编写输入法,但默认情况下无法将其设置为我的编辑文本。你以前试过这个吗?
    • 我没有这样做。但是我之前以与讨论相同的方式进行了字符替换,并且我能够做到。
    【解决方案2】:

    尝试覆盖此方法。返回另一个 keyCode 并查看结果

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
    
            if (keyCode == someKeyCode) {
              //...... button is pressed
            }
            return super.onKeyDown(keyCode, event);
        }
    

    【讨论】:

    • 我之前没有想到这一点,但我们已经在使用 TextWatcher 将我们不想要的字符替换为其他字符。但这并没有多大帮助,正如我上面的评论,因为键盘上的键仍然相同。
    【解决方案3】:

    很确定无法替换默认键盘中的键,您需要编写自己的键盘替换,就像所有键盘应用程序一样。

    【讨论】:

    • 更换键盘是指制作输入法吗?如果是这样,默认情况下我无法将其设置为我的编辑文本。你以前做过吗?
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 2012-05-07
    • 1970-01-01
    • 2018-07-03
    • 2014-02-19
    • 2011-06-12
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多