我正在尝试使用输入的编辑文字附加前缀₹。它与下面的代码完美配合。但问题是,当我按下取消按钮时,无法清除前缀文字₹。当按下键盘取消按钮时我也要清除₹,以便我可以再次看到编辑文字提示
代码:
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());
}
}
});
}
}
Edit text value plus prefixed with dollar sign
in this picture , i want to clear the sign when pressing the cancel button
答案 0 :(得分:0)
取消按钮有什么作用?它是否从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
方法。
答案 1 :(得分:0)
在点击“取消”按钮的同时设置一些布尔标志。检查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;
}
}