2016-02-26 64 views
0

我有两个EditText s。我想先点击第一个EditText s点击清除第二个和第二个edittext点击清除第一个。所以我试过OnClickListenerOnTouchListener。但它不能正常工作。Edittext Focus并点击

et_email.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (!(et_email.getText().toString().equalsIgnoreCase("") && et_mobile.getText().toString().equalsIgnoreCase(""))) { 
        if (MotionEvent.ACTION_UP == event.getAction()) { 
         et_mobile.setText(""); 
         et_mobile.setFocusableInTouchMode(true); 
         et_mobile.setFocusable(true); 
         et_mobile.requestFocus(); 
        } 
        return true; // return is important... 
       } else 
        return false; 
      } 
     }); 
     et_mobile.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (!(et_email.getText().toString().equalsIgnoreCase("") && et_mobile.getText().toString().equalsIgnoreCase(""))) { 
        if (MotionEvent.ACTION_UP == event.getAction()) { 
         et_email.setText(""); 
         et_mobile.setFocusableInTouchMode(true); 
         et_mobile.setFocusable(true); 
         et_mobile.requestFocus(); 
        } 
        return true; // return is important... 
       } 
       else 
        return false; 
      } 
     }); 

但问题是,重点是没有设置第一次触摸,而点击并无法清除EditText

+0

发布你的代码.. – sasikumar

+0

你的意思是“它不能正常工作”。 – Jas

+0

对Native方法和变量使用代码格式。它有助于理解这个问题。 –

回答

1

首先添加到您的EDITTEXT布局:

android:focusableInTouchMode="false" 

没有这一行,在EditText将反应触摸模式,只有听你的onClick()你第二次单击EditText吧。 这将在第一次禁用触摸模式EditText,和火灾的onClick()

focusableInTouchMode

注: Boolean控制视图是否可以采取焦点,而在触摸模式。如果对于视图来说这是正确的,那么该视图可以在被点击时获得焦点,并且如果另一个视图被点击而没有将该属性设置为真,焦点可以保持焦点。

比操作如下: EditText1

EditText et_email = (EditText) findViewById(R.id.yourEditText1); 
et_email.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //do this 
     et_mobile.setText(""); 

     //or this 
     et_mobile.getText().clear();   
    } 
}); 

EditText2

EditText et_mobile = (EditText) findViewById(R.id.yourEditText2); 
et_mobile.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //do this 
     et_email.setText(""); 

     //or this 
     et_email.getText().clear();   
    } 
}); 

这应该可以帮助你出来。

0

你正在清理第一个一个接触的第一个,改变你的变量名的第一个听众这样

if (!(et_email.getText().toString().equalsIgnoreCase("") && et_mobile.getText().toString().equalsIgnoreCase(""))) { 
    if (MotionEvent.ACTION_UP == event.getAction()) { 
     et_mobile.setText(""); 
     et_email.setFocusableInTouchMode(true); 
     et_email.setFocusable(true); 
     et_email.requestFocus(); 
    } 
    return true; // return is important... 
} else 
0

我希望这个代码可以帮助你(我的作品)

edit1 = (EditText) findViewById(R.id.edit1); 
    edit2 = (EditText) findViewById(R.id.edit2); 



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

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