我正在创建一个应用程序,我想改变用户的输入字符串 假设用户按下任何按钮,我不想在edittext中显示该字符,它只是保存在变量中,然后显示之后输入的字符。 有没有办法隐藏和保存用户按下的字符?
答案 0 :(得分:1)
您正在寻找TextWatcher#afterTextChanged
Psuedo代码。请注意,
调用此方法通知您,在s中的某个位置,文本已更改。从这个回调中对s进行进一步的更改是合理的,但要注意不要让自己进入无限循环,因为你所做的任何更改都会导致以递归方式再次调用此方法。 (你不知道发生了什么变化,因为其他的afterTextChanged()方法可能已经进行了其他更改并使偏移无效。但是如果你需要知道这里,你可以在onTextChanged中使用setSpan(Object,int,int,int) (CharSequence,int,int,int)标记你的位置,然后从这里查找跨度结束的位置。
EditText searchTo = (EditText)findViewById(R.id.medittext);
searchTo.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (s.toString().contains("P")) {
searchTo.setText(s.toString().replace("P", "W");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
http://developer.android.com/reference/android/text/TextWatcher.html
答案 1 :(得分:0)
您可以在edittext上使用TextWatcher。
edtText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
//find character and replace over here
}
@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
}
});
或者,您可以尝试setKeyListener
edtText.setKeyListener(new KeyListener() {
@Override
public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
//compare keyCode and do accordingly
return false;
}
@Override
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onKeyDown(View view, Editable text, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public int getInputType() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void clearMetaKeyState(View view, Editable content, int states) {
// TODO Auto-generated method stub
}
})