我想在点击 editText 字段时自动添加美元符号($)。我试图使用 addTextChangedListener ,但它无法按预期工作。
在使用完成输入所有文本后,我不想添加它。只需要在单击字段或成为焦点后添加它。
EditText editTextAd;
editTextAd.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) {
editTextAd.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL){
keyDel = true;
}else{
keyDel = false;
}
return false;
}
});
if (!keyDel) {
String str = s.toString();
if (s.length() == 0) {
str += "$";
editTextAd.setText(str);
editTextAd.setSelection(str.length());
//keyDel=false;
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 0 :(得分:0)
setOnKeyListener
是键盘(硬件)的监听键。
在onTextChanged
中更改EditText.text将导致一个实际上无效的永不停止循环。
单击editText字段时
该活动符合setOnClickListener
或setOnTouchListener
。
成为焦点
活动为setOnFocusChangeListener
。
答案 1 :(得分:0)
步骤1:首先调用edittext.setOnfocusChangeListner,以便在用户点击你的editText时检测到它的焦点。
步骤2:调用edittext.setText(“$”);在editText上将$ sign设置在第一个位置。
步骤3:调用editText.setSelection(1),以便光标从位置1开始而不是0。
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
editText.setText("$");
editText.setSelection(1);
}
}
});