我有两个EditText
个。我希望On First EditText
点击清除第二个和第二个edittext点击清除第一个。所以我尝试了OnClickListener
和OnTouchListener
。但它运作不正常。
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;
}
});
但问题是Focus没有在第一次触摸时设置,在点击时无法清除EditText
。
答案 0 :(得分:1)
首先将其添加到Edittext布局:
android:focusableInTouchMode="false"
如果没有此行,EditText
将对触摸模式作出反应,并且只在您第二次点击EditText
栏时收听 onClick()。
这将禁用EditText
的触摸模式,并在第一次触发 onClick()
注意:布尔值,用于控制视图在触摸模式下是否可以获得焦点。如果对于视图是这样,则该视图在单击时可以获得焦点,并且如果单击另一个没有将此属性设置为true的视图,则可以保持焦点。
比如下: 的 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();
}
});
这应该可以帮到你。
答案 1 :(得分: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
答案 2 :(得分: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("");
}
});