`
ericbaner
  • 浏览: 176987 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【代码】Android带清除按钮的文本编辑框

 
阅读更多

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组件。下面将详细讲解实现这一...

    android有清除功能编辑框

    3. 在代码中获取`EditText`实例,并设置`drawableRight`属性为清除按钮的图标,同时监听`OnClickListener`事件,以便在点击时清除内容: ```java EditText editText = findViewById(R.id.edit_text); Drawable ...

    Android 带清除功能的editText

    然而,有时候我们希望在Edittext中添加一个清除按钮,以便用户能够快速清空输入的内容,这就是“带清除功能的edittext”。在Android应用中实现这一功能,通常需要自定义一个扩展了EditText的类,并在其内部添加一个...

    Android应用源码之Android Form EditText 验证输入合法性的编辑框.zip

    本压缩包"Android应用源码之Android Form EditText 验证输入合法性的编辑框.zip"提供了一个实例,演示了如何在Android中实现这一功能。 首先,我们需要了解EditText的基本用法。EditText是Android SDK中的一个视图...

    XCRichEditor,安卓富文本编辑器,使用RecyclerView——安卓一号.zip

    XCRichEditor是一个开源项目,专为Android设计,它实现了丰富的文本编辑功能,并巧妙地结合了RecyclerView这一强大的布局管理器,为开发者提供了灵活且高效的文本编辑解决方案。本文将深入探讨XCRichEditor的实现...

    一键删除EditText

    这个功能通常表现为一个小小的“X”按钮或者清除图标,点击后能立即清空EditText中的文本。下面我们将详细探讨如何实现这一功能。 ### 方法一:通过设置Drawable右端 1. 首先,你需要在XML布局文件中为EditText...

    Android编程实现的短信编辑器功能示例

    content" android:layout_height="wrap_content" android:layout_weight="1" android:text="清除" /> </LinearLayout></LinearLayout> 在Android平台上开发短信编辑器功能,首先需要处理的是权限管理。在`...

    Android ClearEditTextView

    `ClearEditTextView`通过集成常见的编辑框增强功能,简化了开发流程,提高了应用的交互性。在实际开发中,开发者可以根据具体需求对`ClearEditTextView`进行定制,打造更符合用户体验的输入界面。

    Android基础控件——EditText的自定义、高仿iOS的UITextField

    在Android开发中,EditText是用于用户输入文本的基本控件,它是TextView的一个子类,提供了文本输入和编辑的功能。本文将深入探讨如何自定义EditText以及如何在Android应用中实现与iOS平台上的UITextField类似的视觉...

    可编辑框搜索筛选联系人

    1. **可编辑框(EditText)**:这是Android开发中的一个基本组件,允许用户输入文本。在本场景中,它是用户输入搜索关键字的地方。为了实现筛选功能,我们需要监听EditText的`TextWatcher`事件,当用户输入内容时,...

    android仿QQ图片编辑器.zip

    【Android仿QQ图片编辑器】是一个专为Android平台设计的应用程序,它允许用户对图片进行类似于QQ图片编辑器的各种操作。这个项目的核心是提供一种直观的界面和丰富的工具,让用户可以自由地在图片上添加图形元素,如...

    Android 开发仿简书登录框可删除内容或显示密码框的内容

    首先,`ImgEditText`类有两个私有成员变量,`leftDrawable`和`rightDrawable`,分别用于存储编辑框左侧和右侧的图片。通过`setCompoundDrawablesWithIntrinsicBounds()`方法,我们可以设置这些图片,并调整它们的...

    EditText控件内右侧加图片,图片实现点击事件处理

    在实际应用中,可能还需要处理更多细节,比如防止在输入过程中用户误触清除按钮。可以通过设置`InputFilter`限制输入长度,或者在点击事件中添加一些延迟逻辑。此外,也可以通过调整`ImageView`的布局参数,如`...

    新版Android开发教程.rar

    将会支持 Google 可能发布的手机操作系统或者应用软件,共同开发名为 Android 的开放源代码的移动 系 统。 谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的...

    一个带清除的EditText

    在Android开发中,`EditText`是用户输入文本的常见组件,它允许用户在屏幕上输入、编辑和查看文本。然而,有时候我们可能希望提供一个带有清除按钮的`EditText`,以便用户能够快速清除输入的内容。标题提到的“一个...

    Android中使用SharedPreferences保存密码(简洁版)的代码清单.pdf

    如果复选框`ckRemember`被勾选,表示用户希望记住密码,那么将`EditText`控件中的"ID"和"PSS"文本转换为字符串并存储,同时更新"Remember"键的布尔值。`commit()`方法用于提交更改。如果不记住密码,就清除所有数据...

Global site tag (gtag.js) - Google Analytics