好的,我想以某种方式执行以下操作。在对话框中,我希望用户能够选择一个字母(只有字母)。进去之后,他应该就能看到了。如果用户对他的选择不满意,他应该可以简单地点击另一个字母。他现在应该看到这封信,而不是以前的。
我想用尽可能多的标准选项来做到这一点。我想以某种方式自定义 TextView 以仅显示一个当前输入的字符。或者也许活动或片段可以以某种方式拦截来自键盘的输入,然后在每个输入上使用当前输入的字符编辑 textView。
谁能告诉我怎么做?
您需要将一个文本更改的侦听器附加到您的 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)));
}
}
});
班级成员
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)
{
}
}