话不多说,直奔主题,清除按钮的输入框,上代码
package cn.com.bmac.nfc.ui.widget;
import cn.com.bmac.nfc.R;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.animation.Animation;
import android.view.animation.CycleInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.EditText;
public class ClearEditText extends EditText implements OnFocusChangeListener,
TextWatcher {
private Drawable mClearDrawable;
public ClearEditText(Context context) {
this(context, null);
}
public ClearEditText(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.editTextStyle);
}
public ClearEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
mClearDrawable = getCompoundDrawables()[2];
if (mClearDrawable == null) {
mClearDrawable = getResources().getDrawable(
R.drawable.edittext_close);//这里替换成自己的清除按钮就ok,其他的直接copy,完全可以用了
}
mClearDrawable.setBounds(0, 0, mClearDrawable.getIntrinsicWidth(),
mClearDrawable.getIntrinsicHeight());
setClearIconVisible(false);
setOnFocusChangeListener(this);
addTextChangedListener(this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (getCompoundDrawables()[2] != null) {
if (event.getAction() == MotionEvent.ACTION_UP) {
boolean touchable = event.getX() > (getWidth()
- getPaddingRight() - mClearDrawable
.getIntrinsicWidth())
&& (event.getX() < ((getWidth() - getPaddingRight())));
if (touchable) {
this.setText("");
}
}
}
return super.onTouchEvent(event);
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
setClearIconVisible(getText().length() > 0);
} else {
setClearIconVisible(false);
}
}
protected void setClearIconVisible(boolean visible) {
Drawable right = visible ? mClearDrawable : null;
setCompoundDrawables(getCompoundDrawables()[0],
getCompoundDrawables()[1], right, getCompoundDrawables()[3]);
}
@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {
setClearIconVisible(s.length() > 0);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
public void setShakeAnimation() {
this.setAnimation(shakeAnimation(5));
}
public static Animation shakeAnimation(int counts) {
Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);
translateAnimation.setInterpolator(new CycleInterpolator(counts));
translateAnimation.setDuration(1000);
return translateAnimation;
}
}
在布局中引用
<包名.ClearEditText /
..................
>
属性和正常的输入框的属性完全一样,为什么一样呢,因为他继承的是EditText啊,哈哈哈,开个玩笑,欢迎评论,转载请注明出处
相关推荐
在创建一个带清除按钮的输入框时,我们可以利用HTML5的一些特性,结合CSS和JavaScript来实现这个功能。这个设计通常用于让用户能够方便地删除已输入的内容,提高用户体验。 首先,我们需要在HTML中创建一个`input`...
在Android开发中,创建一个带有“清洁”按钮的输入框是一项常见的需求,它通常用于清除用户输入的内容,提供更友好的交互体验。本实例将详细讲解如何实现这样一个功能。 首先,我们需要在XML布局文件中定义一个...
在Android开发中,创建一个具有特定功能的登录输入框是常见的需求,比如带有删除按钮以及显示/隐藏密码的选项。这个自定义控件——MyLoginEditText,旨在提供更友好的用户体验,让用户能够方便地清除输入内容,同时...
本文将深入探讨如何基于Android系统原生的EditText控件,实现一个带有清除按钮、可切换密码可见性的自定义输入框。这个组件特别适用于处理需要输入密码或者短信验证码的场景,它能提供更加友好的交互方式,提升用户...
"带删除按钮的输入框"就是一个常见的例子,特别是在模仿iOS风格的界面设计时。这个功能通常通过自定义一个EditText控件来实现,为用户提供便捷的方式来清除输入框的内容,类似于iOS中的文本字段。 首先,我们需要...
本教程将详细讲解如何在Android中自定义一个带有清除功能的EditText输入框。 首先,我们来理解为什么需要这个功能。在许多应用程序中,用户在输入文字后,可能会想要快速清空输入框,这时一个明显的清除图标(通常...
为了提升用户体验,许多应用会在输入框旁边添加一个清除按钮,允许用户快速清空输入内容。本篇文章将深入探讨如何在Android中实现带有清除功能的`EditText`控件。 一、`EditText`基础 `EditText`继承自`TextView`...
本资源是自定义带清除按钮的TextView,提供完善的属性设置,包括字长、清除按钮样式、字号、字颜色、hint、text属性设置,并都提供相应的代码设置方法,而且暴露出对应方法获取EditText拉进行更详细比如inputype的...
Android 带清除功能的输入框控件实例详解 Android 带清除功能的输入框控件实例详解是 Android 开发中常用的控件之一,通过自定义 ClearEditText 类,可以实现带清除功能的输入框控件。该控件可以在用户输入时实时...
本资源"安卓搜索相关相关-Android带清除功能的输入框控件.rar"似乎提供了一个具有这种功能的自定义输入框控件,适用于搜索界面或其他需要快速清除输入的场景。 Android系统原生的EditText控件并不包含内置的清除...
Android 自定义EditText输入框带清空按钮 Android 自定义EditText输入框带清空按钮是 Android 开发中常见的功能,主要用于实现 EditText 控件的清空按钮功能。在 Android 中,EditText 控件默认不具备清空按钮功能...
在Android开发中,为了提供与iOS类似的用户体验,开发者经常需要创建具有清除按钮的输入框控件,这在iOS系统中是常见的设计。标题中的“Android 带清除功能的输入框控件ClearEditText”就是这样一个组件,它允许用户...
本教程将详细讲解如何创建一个自定义输入框,该输入框带有删除全部按钮,用户可以轻松清除输入的所有文本。 首先,我们需要创建一个新的XML布局文件来定义自定义的EditText。这个布局应该包含一个EditText和一个...
这个压缩包文件"Android自定义EditText实现带清除功能的输入框"显然就是针对这一需求的示例代码。 首先,我们来看看如何在Android中自定义一个带有清除按钮的EditText。通常,我们会创建一个新的XML布局文件,包含...
要创建一个带有清除按钮的`EditText`,我们可以扩展`EditText`类,并自定义它的视图。这通常涉及到重写`onDraw()`方法或者使用`CompoundButton`(如`CheckBox`或`ImageButton`)作为清除图标,通过监听按钮的点击...
这个按钮通常位于EditText右端,通过简单的点击操作即可消除所有文字,减少了用户在输入错误后手动删除的繁琐步骤。 其次,密码显示与隐藏的切换功能是隐私保护的重要体现。在处理密码输入时,用户可以切换到“隐藏...
"带清除按钮的edittext"是一个常见的需求,特别是在输入框中需要快速清空内容时。本项目提供了一个自定义的EditText控件,名为ClearEditText,它集成了一个清除按钮,使得用户能够方便地删除输入内容。 首先,我们...
然而,为了提供更好的用户体验,我们有时需要在EditText右侧添加一个清除按钮,以便用户可以快速删除输入的内容。这就是`ClearEditText`概念的来源。这个特殊的EditText子类增加了清除图标,用户只需点击该图标,就...
6. **图标**:可以添加左侧或右侧图标,使用`app:startIconDrawable`和`app:endIconDrawable`属性,或者使用`app:endIconMode`选择内置图标,如清除按钮。 7. **光标和选中状态**:可以自定义光标的颜色和宽度,...
6. **其他功能**:为了增加用户体验,可以添加清除按钮、错误提示等功能。例如,当用户连续多次输入错误密码时,可以显示错误提示,并限制一段时间内不能再次输入。 在项目中引入PinView,可以通过Gradle依赖或直接...