package com.your.company;
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.widget.EditText;
public class ClearableEditText extends EditText {
public String defaultValue = "";
final Drawable imgX =
getResources().getDrawable(android.R.drawable.presence_offline ); // X
// image
public ClearableEditText(Context context) {
super(context);
init(context);
}
/**
* @param context
* @param attrs
*/
public ClearableEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
/**
* @param context
* @param attrs
* @param defStyle
*/
public ClearableEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context ctx) {
// Set bounds of our X button
imgX.setBounds(0, 0, imgX.getIntrinsicWidth(),
imgX.getIntrinsicHeight());
// There may be initial text in the field, so we may need to display the
// button
manageClearButton();
this.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ClearableEditText et = ClearableEditText.this;
// Is there an X showing?
if (et.getCompoundDrawables()[2] == null)
return false;
// Only do this for up touches
if (event.getAction() != MotionEvent.ACTION_UP)
return false;
// Is touch on our clear button?
if (event.getX() > et.getWidth() - et.getPaddingRight()
- imgX.getIntrinsicWidth()) {
et.setText("");
ClearableEditText.this.removeClearButton();
}
return false;
}
});
this.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
ClearableEditText.this.manageClearButton();
}
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
});
}
void manageClearButton() {
if (this.getText().toString().equals(""))
removeClearButton();
else
addClearButton();
}
void addClearButton() {
this.setCompoundDrawables(this.getCompoundDrawables()[0],
this.getCompoundDrawables()[1], imgX,
this.getCompoundDrawables()[3]);
}
void removeClearButton() {
this.setCompoundDrawables(this.getCompoundDrawables()[0],
this.getCompoundDrawables()[1], null,
this.getCompoundDrawables()[3]);
}
}
分享到:
相关推荐
在Android开发中,创建自定义文本编辑框是一个常见的需求,特别是在设计复杂用户界面或提供特殊功能时。"文本编辑框"这个项目显然专注于为Android应用添加一个具备删除功能的EditText组件。下面将详细讲解实现这一...
3. 在代码中获取`EditText`实例,并设置`drawableRight`属性为清除按钮的图标,同时监听`OnClickListener`事件,以便在点击时清除内容: ```java EditText editText = findViewById(R.id.edit_text); Drawable ...
然而,有时候我们希望在Edittext中添加一个清除按钮,以便用户能够快速清空输入的内容,这就是“带清除功能的edittext”。在Android应用中实现这一功能,通常需要自定义一个扩展了EditText的类,并在其内部添加一个...
本压缩包"Android应用源码之Android Form EditText 验证输入合法性的编辑框.zip"提供了一个实例,演示了如何在Android中实现这一功能。 首先,我们需要了解EditText的基本用法。EditText是Android SDK中的一个视图...
XCRichEditor是一个开源项目,专为Android设计,它实现了丰富的文本编辑功能,并巧妙地结合了RecyclerView这一强大的布局管理器,为开发者提供了灵活且高效的文本编辑解决方案。本文将深入探讨XCRichEditor的实现...
这个功能通常表现为一个小小的“X”按钮或者清除图标,点击后能立即清空EditText中的文本。下面我们将详细探讨如何实现这一功能。 ### 方法一:通过设置Drawable右端 1. 首先,你需要在XML布局文件中为EditText...
content" android:layout_height="wrap_content" android:layout_weight="1" android:text="清除" /> </LinearLayout></LinearLayout> 在Android平台上开发短信编辑器功能,首先需要处理的是权限管理。在`...
`ClearEditTextView`通过集成常见的编辑框增强功能,简化了开发流程,提高了应用的交互性。在实际开发中,开发者可以根据具体需求对`ClearEditTextView`进行定制,打造更符合用户体验的输入界面。
在Android开发中,EditText是用于用户输入文本的基本控件,它是TextView的一个子类,提供了文本输入和编辑的功能。本文将深入探讨如何自定义EditText以及如何在Android应用中实现与iOS平台上的UITextField类似的视觉...
在实际应用中,可能还需要处理更多细节,比如防止在输入过程中用户误触清除按钮。可以通过设置`InputFilter`限制输入长度,或者在点击事件中添加一些延迟逻辑。此外,也可以通过调整`ImageView`的布局参数,如`...
1. **可编辑框(EditText)**:这是Android开发中的一个基本组件,允许用户输入文本。在本场景中,它是用户输入搜索关键字的地方。为了实现筛选功能,我们需要监听EditText的`TextWatcher`事件,当用户输入内容时,...
【Android仿QQ图片编辑器】是一个专为Android平台设计的应用程序,它允许用户对图片进行类似于QQ图片编辑器的各种操作。这个项目的核心是提供一种直观的界面和丰富的工具,让用户可以自由地在图片上添加图形元素,如...
首先,`ImgEditText`类有两个私有成员变量,`leftDrawable`和`rightDrawable`,分别用于存储编辑框左侧和右侧的图片。通过`setCompoundDrawablesWithIntrinsicBounds()`方法,我们可以设置这些图片,并调整它们的...
将会支持 Google 可能发布的手机操作系统或者应用软件,共同开发名为 Android 的开放源代码的移动 系 统。 谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的...
在Android开发中,`EditText`是用户输入文本的常见组件,它允许用户在屏幕上输入、编辑和查看文本。然而,有时候我们可能希望提供一个带有清除按钮的`EditText`,以便用户能够快速清除输入的内容。标题提到的“一个...
如果复选框`ckRemember`被勾选,表示用户希望记住密码,那么将`EditText`控件中的"ID"和"PSS"文本转换为字符串并存储,同时更新"Remember"键的布尔值。`commit()`方法用于提交更改。如果不记住密码,就清除所有数据...