0

好的,我想以某种方式执行以下操作。在对话框中,我希望用户能够选择一个字母(只有字母)。进去之后,他应该就能看到了。如果用户对他的选择不满意,他应该可以简单地点击另一个字母。他现在应该看到这封信,而不是以前的。

我想用尽可能多的标准选项来做到这一点。我想以某种方式自定义 TextView 以仅显示一个当前输入的字符。或者也许活动或片段可以以某种方式拦截来自键盘的输入,然后在每个输入上使用当前输入的字符编辑 textView。

谁能告诉我怎么做?

4

2 回答 2

1

您需要将一个文本更改的侦听器附加到您的 EditText:

这是一种解决方法:

public class XYZ extends Activity {

String toCompare = "";

....

....

....

yourEditText.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub

    }

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

                    if (s.length() > 0 && !toCompare.equals(s.toString())) {
                            toCompare = String.valueOf(s.charAt(s.length() - 1));
                            yourEditText.setText(String.valueOf(s.charAt(s.length() - 1)));
                    }

    }

});
于 2013-07-17T17:50:37.970 回答
1

班级成员

private MyTextWatcher mTextWatcher;
private EditText mEditText;

在适当的地方调用 setTextWatcher(),例如在 onCreate

public void setTextWatcher()
{
    mTextWatcher = new MyTextWatcher();
    mEditText.addTextChangedListener(mTextWatcher);
}

MyTextWatcher 类

public class MyTextWatcher implements TextWatcher
{

    @Override
    public void afterTextChanged(Editable s)
    {

        String text = mEditText.getText().toString();
        if (text.length() > 1)
        {
            mEditText.removeTextChangedListener(mTextWatcher);
            mEditText.setText(text.substring(1));
            Selection.setSelection(mEditText.getText(), 1);
            mEditText.addTextChangedListener(mTextWatcher);
        }
    }

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

    }

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

    }

}
于 2013-07-17T22:31:02.560 回答