簡體   English   中英

清除前綴編輯文本值

[英]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方法內檢查該標志值。

  1. 聲明boolean isCancel = false;
  2. 您的取消按鈕點擊監聽器

     btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isCancel = true; editText.setText(""); } }); 
  3. 更改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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM