添加删除功能的EditText

EditTextWithDel组件的功能如下:

       1、在没用内容的时候显示不可用的图片状态,在有内容的时候显示可用的图片状态;

       2、在有内容的时候点击删除按钮可以删除EditText中的内容;

组件的代码如下:

[java]view plaincopyprint?

  1. package com.sunday.customs;
  2. import com.example.customs.R;
  3. import android.content.Context;
  4. import android.graphics.Rect;
  5. import android.graphics.drawable.Drawable;
  6. import android.text.Editable;
  7. import android.text.TextWatcher;
  8. import android.util.AttributeSet;
  9. import android.util.Log;
  10. import android.view.MotionEvent;
  11. import android.widget.EditText;
  12. /**
  13. * @author sunday
  14. * 2013-12-04
  15. */
  16. publicclass EditTextWithDel extends EditText {
  17. privatefinalstatic String TAG = "EditTextWithDel";
  18. private Drawable imgInable;
  19. private Drawable imgAble;
  20. private Context mContext;
  21. public EditTextWithDel(Context context) {
  22. super(context);
  23. mContext = context;
  24. init();
  25. }
  26. public EditTextWithDel(Context context, AttributeSet attrs, int defStyle) {
  27. super(context, attrs, defStyle);
  28. mContext = context;
  29. init();
  30. }
  31. public EditTextWithDel(Context context, AttributeSet attrs) {
  32. super(context, attrs);
  33. mContext = context;
  34. init();
  35. }
  36. privatevoid init() {
  37. imgInable = mContext.getResources().getDrawable(R.drawable.delete_gray);
  38. imgAble = mContext.getResources().getDrawable(R.drawable.delete);
  39. addTextChangedListener(new TextWatcher() {
  40. @Override
  41. publicvoid onTextChanged(CharSequence s, int start, int before, int count) {}
  42. @Override
  43. publicvoid beforeTextChanged(CharSequence s, int start, int count, int after) {}
  44. @Override
  45. publicvoid afterTextChanged(Editable s) {
  46. setDrawable();
  47. }
  48. });
  49. setDrawable();
  50. }
  51. //设置删除图片
  52. privatevoid setDrawable() {
  53. if(length() < 1)
  54. setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);
  55. else
  56. setCompoundDrawablesWithIntrinsicBounds(null, null, imgAble, null);
  57. }
  58. // 处理删除事件
  59. @Override
  60. publicboolean onTouchEvent(MotionEvent event) {
  61. if (imgAble != null && event.getAction() == MotionEvent.ACTION_UP) {
  62. int eventX = (int) event.getRawX();
  63. int eventY = (int) event.getRawY();
  64. Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);
  65. Rect rect = new Rect();
  66. getGlobalVisibleRect(rect);
  67. rect.left = rect.right - 50;
  68. if(rect.contains(eventX, eventY))
  69. setText("");
  70. }
  71. returnsuper.onTouchEvent(event);
  72. }
  73. @Override
  74. protectedvoid finalize() throws Throwable {
  75. super.finalize();
  76. }
  77. }
package com.sunday.customs;

import com.example.customs.R;

import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.EditText;

/**
 * @author sunday
 * 2013-12-04
 */
public class EditTextWithDel extends EditText {
	private final static String TAG = "EditTextWithDel";
	private Drawable imgInable;
	private Drawable imgAble;
	private Context mContext;

	public EditTextWithDel(Context context) {
		super(context);
		mContext = context;
		init();
	}

	public EditTextWithDel(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		mContext = context;
		init();
	}

	public EditTextWithDel(Context context, AttributeSet attrs) {
		super(context, attrs);
		mContext = context;
		init();
	}

	private void init() {
		imgInable = mContext.getResources().getDrawable(R.drawable.delete_gray);
		imgAble = mContext.getResources().getDrawable(R.drawable.delete);
		addTextChangedListener(new TextWatcher() {
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {}
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
			@Override
			public void afterTextChanged(Editable s) {
				setDrawable();
			}
		});
		setDrawable();
	}

	//设置删除图片
	private void setDrawable() {
		if(length() < 1)
			setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);
		else
			setCompoundDrawablesWithIntrinsicBounds(null, null, imgAble, null);
	}

	 // 处理删除事件
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (imgAble != null && event.getAction() == MotionEvent.ACTION_UP) {
            int eventX = (int) event.getRawX();
            int eventY = (int) event.getRawY();
            Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);
            Rect rect = new Rect();
            getGlobalVisibleRect(rect);
            rect.left = rect.right - 50;
            if(rect.contains(eventX, eventY))
            	setText("");
        }
        return super.onTouchEvent(event);
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }

}

效果图如下:

添加删除功能的EditText

时间: 2024-10-12 22:30:47

添加删除功能的EditText的相关文章

【Android-EditText】自定义带删除功能的EditText

我们经常在一些应用中见到输入框带有删除功能,今天我们就来实现这个功能(文字组织能力不强,大家随便看看).主要是记录一下自己的学习经历,如果对大家有帮助,我会更开心的. 先上图: 实现要点: 1.当输入框为空时,删除按钮隐藏: 2.当输入框不为空时,显示删除按钮. 核心代码: package com.example.view; import com.example.ui.R; import android.content.Context; import android.graphics.Rect;

为Popuplist的下拉选项添加删除功能(NGUI)

NGUI例子里的popuplist是这样的:,但有时我们希望下拉选项都有删除功能,也就是这样:,一种方法是改popuplist的源码,我想这个实现起来不难,但现在我想说的是用反射来实现此功能,以及其他注意点. 第一步:我们查看下popuplist的源码可以发现,他有个OnCLick点击事件,而里面实现的就是绘制所有下拉选项的,并且所有下拉选项的的父节点都是mChild这个私有字段, 第二步:我们只要给popuplist再附加一个我们自己写的脚本A,在这个脚本里面通过反射mChild的孩子,就可以

javascript--select标签的添加删除功能的使用

在网页开发中,常常遇见这种问题,给定两个框,A和B,和几个图片按钮,A中存在几个操作,点击图片按钮,填加至B中,或者从B中移除等,这种效果如何实现,本文加以总结. 几种效果图如下: 原始图:                                                                                                                 添加全部功能图:    移除全部功能图:                      

自定义组件------带删除功能的EditText

以前在为EditText添加左侧图标,以及右侧一个删除按钮时,经常是使用FrameLayout,当这样代码复用差,维护也麻烦.最好的方法是重写EditText实现该功能.现在看看效果图,后面再讲解实现方式. 重写之后的组件有如下功能,只有当EditText内容不为空,而且获得焦点,才会出现删除按钮,点击删除按钮则清空内容.代码如下: public class CleanableEditText extends EditText { //回调函数 private TextWatcherCallBa

android-android 带删除功能的EditText

DJEditText.java /** * Created by xp.chen on 2016/11/25. */ public class DJEditText extends AppCompatEditText { private static final int DRAWABLE_LEFT = 0; private static final int DRAWABLE_TOP = 1; private static final int DRAWABLE_RIGHT = 2; private

UEditor 添加在线管理图片删除功能

第一,需要添加一个 php 文件来实现删除功能,文件添加到: ueditor\php\action_delete.php 代码内容: <?php   /*---------------------------  * wang  *zhibeiwang.blog.51cto.com  * 2017-08-10  * action_delete.php  * 删除 Ueditor 目录下的文件  *---------------------------*/   try {     //获取路径   

使用EasyUI实现添加和删除功能

        增删该查是任何一个项目都少不了的功能操作,这篇博文主要简介一下如何使用EasyUI实现添加和删除功能.         首先,导入EasyUI的js代码: <link href="~/EasyuiSource/themes/default/easyui.css" rel="stylesheet" /> <link href="~/EasyuiSource/themes/icon.css" rel="st

添加、编辑、删除功能测试点

添加功能 1.特殊键:(1)是否支持Tab键 (2)是否支持回车键 2.提示信息:(1)不符合要求的地方是否有错误提示 3.唯一性:(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段 (字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性) 4.数据正确性: (1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新. (2)进行必填项检查(即是否给出提示以及提示后是否依然把数据存到数据库中:

FileSystemObject组件新建读取添加修改删除功能实例

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>FileSystemObject组件应该实例</title> </head> <