[英]Clear the prefix edit text value
我正在尝试在前缀₹后面附加输入的编辑文本。 它与下面的代码完美配合。 但是问题是当我按下取消按钮时,无法清除前缀文本₹ 。 我也希望在按下键盘取消按钮时也清除₹,以便再次看到编辑文本提示
代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = (EditText)findViewById(R.id.edit);
editText.setText("");
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if(!editText.getText().toString().startsWith("₹**₹**")){
editText.setText("₹**₹**"); // not able to use that sign , so that's why those asterisk. It's actually just ₹
Selection.setSelection(editText.getText(), editText.getText().length());
}
}
});
}
}
取消按钮有什么作用? 它会从EditText中删除所有文本吗? 如果是这样,您可以在afterTextChanged
方法中检查EditText中的文本是否为空。 仅当它不为空时,才添加符号。 您的方法可能如下所示:
@Override
public void afterTextChanged(Editable editable) {
if(!editText.getText().toString().startsWith("₹**₹**")){
editText.setText("₹**₹**"); // not able to use that sign , so that's why those asterisk. It's actually just ₹
Selection.setSelection(editText.getText(), editText.getText().length());
} else {
// The text starts with the sign, if it is equal to it, set the text to be empty
if(editText.getText().toString().equals("₹**₹**")){
editText.setText("");
}
}
}
我敢肯定,可以将其重构为更清洁的解决方案,但这应该对您有用。
您必须解决的问题如下:通过清除EditText
中的文本,您可以更改文本,这将触发addTextChangedListener
方法。
在单击“取消”按钮时设置一些布尔标志,并在afterTextChanged
方法内检查该标志值。
boolean isCancel = false;
您的取消按钮点击监听器
btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isCancel = true; editText.setText(""); } });
更改afterTextChanged
@Override public void afterTextChanged(Editable editable) { if(!isCancel) { if(!editText.getText().toString().startsWith("₹**₹**")){ editText.setText("₹**₹**"); Selection.setSelection(editText.getText(), editText.getText().length()); } } else { isCancel = false; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.