0
我想用字符替换EditText视图的显示值,同时将原始输入保留在另一个StringBuilder对象中。TextWatcher StringBuilder append方法将CharSequence附加到两个StringBuilder对象
下面的代码:
final StringBuilder stringBuilderHiddenPassword = new StringBuilder();
final StringBuilder mPass = new StringBuilder();
pass = new StringBuilder();
etPassword.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
stringBuilderHiddenPassword.append("*");
etPassword.removeTextChangedListener(this);
etPassword.setText(stringBuilderHiddenPassword);
etPassword.addTextChangedListener(this);
}
@Override
public void afterTextChanged(Editable s) {
pass.append(s);
Toast.makeText(Pass.this, pass, Toast.LENGTH_SHORT).show();
}
});
首先inputed字符显示在吐司作为原始字符inputed,但第二个增加一个*
它。所以如果我输入a
它显示a
,如果我输入aa
,它显示aa*
,对于aaa
它是aa*a**
等等。
如何将这些对象同时附加到这两个对象上?代码应附加到stringBuilderHiddenPassword
,但很明显,这不是这种方法的工作原理。
不,这不是你应该做的,你应该使用一个自定义的'TransformationMethod'相反,文档说什么:*“的TextView使用TransformationMethods进行操作,例如用点替换密码字符,或保持换行符不会在单行文本字段中出现换行符。“* – pskink