android EditText 输入文字后显示叉,并且监听清空事件
时间: 2024-06-09 17:08:32 浏览: 148
Android EditText 监听用户输入完成的实例
可以通过设置EditText的Drawable来实现显示叉,并且通过设置TextWatcher来监听清空事件。
首先,在EditText的布局文件中添加一个drawable:
```
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableRight="@drawable/ic_clear"
/>
```
然后,在代码中添加TextWatcher并设置清空事件的监听:
```
EditText editText = findViewById(R.id.edit_text);
editText.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) {
if (s.length() > 0) {
editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_clear, 0);
} else {
editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (editText.getCompoundDrawables()[2] != null) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if (event.getX() >= (editText.getRight() - editText.getCompoundDrawables()[2].getBounds().width())) {
editText.setText("");
}
}
}
return false;
}
});
```
在TextWatcher的onTextChanged方法中,判断EditText中是否有文字,如果有则显示叉,否则隐藏叉。
在setOnTouchListener方法中,监听叉的点击事件,如果点击叉则清空EditText中的文字。
阅读全文