如何在android中立即输入字母?

时间:2011-01-07 09:17:48

标签: android

我在android中有EditText视图..我想在输入一封信时应用程序得到这封信..

这意味着需要有一个监听器或事件处理程序来输入每个字母

希望我的问题很清楚

6 个答案:

答案 0 :(得分:14)

EditText et = (EditText) findViewById(R.id.EditText01);

        et.addTextChangedListener( new TextWatcher()
        {
            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

                try
                {
                    char currentChar = arg0.charAt(arg1); // currently typed character
                }
                catch(Exception e)
                {
                    // error
                }
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {

            }

            @Override
            public void afterTextChanged(Editable arg0) {

            }
        });

答案 1 :(得分:4)

您可以使用方法TextView.addTextChangedListener(TextWatcher watcher)

TextWatcher提供了3种不错的方法:

public abstract void afterTextChanged (Editable s)

public abstract void beforeTextChanged (CharSequence s, int start, int count, int after)

public abstract void onTextChanged (CharSequence s, int start, int before, int count)

Here the doc

答案 2 :(得分:1)

一种更简单的方法是像这样覆盖onKeyDown()

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    switch (keyCode) {
        case KeyEvent.KEYCODE_Q:
            // Do your thing here. 
            break;
    }
    return super.onKeyDown(keyCode, event);
}

答案 3 :(得分:0)

查看EditText中的“setOnKeyListener”方法。

答案 4 :(得分:0)

答案 5 :(得分:0)

Vikas的回答几乎对我有用,但并不完全。这是我为输入实际字符而做的,因为它是键入的:

EditText et = ...;
et.addTextChangedListener(new TextWatcher() {
    @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

    @Override public void afterTextChanged(Editable editable) { }

    @Override public void onTextChanged(CharSequence s, int start, int count, int after) {
        if (s.length() > start + count) {
            char c = s.charAt(start + count);
            // do something ...
        }
    }
});