在单击字段时将美元符号添加到editText android

时间:2018-02-24 02:57:28

标签: java android android-edittext

我想在点击 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) {

            }

        });

2 个答案:

答案 0 :(得分:0)

setOnKeyListener是键盘(硬件)的监听键。

onTextChanged中更改EditText.text将导致一个实际上无效的永不停止循环。

  

单击editText字段时

该活动符合setOnClickListenersetOnTouchListener

  

成为焦点

活动为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);
                }
            }
        });