android EditText 输入文字后显示叉,空则不显示
时间: 2023-06-15 17:03:19 浏览: 167
你可以通过添加一个 TextWatcher 来监听 EditText 中的文本变化,然后根据文本的变化来显示或隐藏清除按钮。
以下是一个示例代码:
```java
EditText editText = findViewById(R.id.edit_text);
final Drawable clearButton = ContextCompat.getDrawable(this, R.drawable.ic_clear); // 获取清除按钮的图标
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(null, null, clearButton, null); // 显示清除按钮
} else {
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); // 隐藏清除按钮
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
// 点击清除按钮清空文本
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && editText.getCompoundDrawables()[2] != null) {
if (event.getX() >= (editText.getRight() - editText.getCompoundDrawables()[2].getBounds().width())) {
editText.setText("");
return true;
}
}
return false;
}
});
```
在这个示例中,我们添加了一个 `TextWatcher` 来监听 EditText 中的文本变化。在 `onTextChanged()` 方法中,我们检查文本的长度,如果长度大于 0,则显示清除按钮,否则隐藏清除按钮。我们还使用 `setOnTouchListener()` 方法来监听清除按钮的点击事件,当点击清除按钮时,我们将 EditText 的文本清空。注意,在这个示例中,我们使用 `setCompoundDrawablesWithIntrinsicBounds()` 方法来设置 EditText 中的清除按钮图标,因为我们想要将其放在 EditText 的右侧。你需要根据你自己的需求来设置这个图标的位置和大小。
阅读全文