哪个EditText方法侦听输入的每个字母

时间:2013-08-29 21:01:54

标签: android android-layout android-edittext

我有一个EditText。我使用setOnEditorActionListener来收听用户输入的每个字母。但这似乎并没有奏效。我在函数中放置了一个println语句来查看它已到达,但它从未调用过。这是EditText。缺少什么?

    <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="5dp"
            android:drawableRight="@drawable/my_img"
            android:hint="@string/email_hint"
            android:imeActionId="@+id/login"
            android:inputType="textNoSuggestions|textVisiblePassword"
            android:maxLines="1"
            android:singleLine="true"
            android:textColor="#000000" />

3 个答案:

答案 0 :(得分:6)

如果您想收听用户输入的每个字母,您可以在EditText上注册TextWatcher

editText.addTextChangedListener(new TextWatcher() {...} );

答案 1 :(得分:1)

在使用EditText对象的活动中尝试此操作。

EditText emailText = (EditText) findViewById(R.id.email);

emailText.addTextChangedListener(new TextWatcher() {

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

    // put a debug statement to check

    }

    @Override
    public void afterTextChanged(Editable s) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
    });

答案 2 :(得分:1)

您正在寻找TextWatcher。回调是不言自明的。根据您的需要,您可能希望将逻辑代码添加到onTextChanged,beforeTextChanged或afterTextChanged。在CharSequence对象中,您可以获取EditText的文本:

EditText mEditText = (EditText) findViewById(R.id.email);
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

            // TODO Auto-generated method stub
            // Here you may access the text from the object s, like s.toString()

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            // TODO Auto-generated method stub
        }

@Override
public void afterTextChanged(Editable s) {

            // TODO Auto-generated method stub
        }
    });