当光标聚焦在另一个EditText上时,如何使用onClick清除EditText?

时间:2018-02-15 07:26:56

标签: android android-edittext

我有两个EditText小部件(editText1和editText2)都有一个按钮填充的值,光标聚焦在editText1 上。我在editText上都有监听器,如下面的代码片段所示。使用光标在editText1 上,需要两次点击/触摸才能清除editText2 。如何通过单击/触摸来清除editText2?

tipPercent.setOnClickListener(new EditText.OnClickListener(){
        public void onClick(View view){
            try{
                tipPercent.setText("");
            }
splitTip.setOnClickListener(new EditText.OnClickListener(){
        public void onClick(View view){
            try{
                splitTip.setText("");
            }

EditText和点击事件的屏幕截图

enter image description here

5 个答案:

答案 0 :(得分:3)

试试这个..

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
           //clear the edittext
        } else {
            //set the value when hasFocus is not
        }
    }
});

答案 1 :(得分:2)

试试这个:

tipPercent.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){
            splitTip.setText("");
        }
    }
});

splitTip.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){
            tipPercent.setText("");
        }
    }
});

答案 2 :(得分:1)

如果我理解你的问题 你关注焦点时需要清除setOnFocusChangeListener吗?然后,当editText获得焦点或失去焦点时,您需要使用editText,您可以清除editText2.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean hasFocus) { if (hasFocus) { //clear editText when editext get focus Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show(); } else { //clear editText when editext lost focus Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show(); } } });

WebView

答案 3 :(得分:0)

试试这个:

/*EditText1*/
tipPercent.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        tipPercent.setText("");
    }
});

/*EditText2*/
splitTip.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        splitTip.setText("");
    }
});

onFocusListener将起作用,因为这将允许您一键清除文本,因为onClickListener不是为此目的而制作的 希望它有所帮助

答案 4 :(得分:0)

试试这个// Kotlin

 private fun editTextClear(currentET: EditText, targetET: EditText) {
        currentET.setFocusableInTouchMode(true)
        currentET.setFocusable(true)
        targetET.clearComposingText()
        targetET.setFocusable(false)
  }

//现在在onClick()

上调用此方法
       first_et.setOnClickListener {
            editTextClear(first_et, second_et)
        }
        second_et.setOnClickListener {
            editTextClear(second_et, first_et)
        }

如果您尝试为focusable="false"设置second_et,则可以从第一次单击second_et到第一次清空first_et

希望这能解决您的问题