效果图:

这里写图片描述

直接撸代码:

public class SearchEditText extends EditText {

private static final String TAG = "SearchEditText";

private Drawable searchImg, delImg;

public SearchEditText(Context context) {

super(context);

init();

}

public SearchEditText(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public SearchEditText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

public SearchEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

init();

}

private void init() {

int pxDimension = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16,

getContext().getResources().getDisplayMetrics());

setPadding(pxDimension, 0, pxDimension, 0);

searchImg = getContext().getResources().getDrawable(R.drawable.ic_search_red_500_24dp);

delImg = getContext().getResources().getDrawable(R.drawable.ic_delete_forever_red_500_24dp);

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) {

}

@Override

public void afterTextChanged(Editable s) {

setDrawables();//内容变换后

}

});

setDrawables();

}

private void setDrawables() {

if (length() < 1) {

setCompoundDrawablesWithIntrinsicBounds(searchImg, null, null, null);

} else {

setCompoundDrawablesWithIntrinsicBounds(searchImg, null, delImg, null);

Drawable[] compoundDrawables = getCompoundDrawables();

// 0 ,1 ,2, 3对应左,上,右,下

//如果图片小可以拉伸下,代码如下

// Rect bounds = compoundDrawables[2].getBounds();

// int size = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2,

// getContext().getResources().getDisplayMetrics());

// compoundDrawables[2].setBounds(bounds.left, bounds.top, bounds.right + size, bounds.bottom + size);

// setCompoundDrawables(compoundDrawables[0], compoundDrawables[1], compoundDrawables[2], compoundDrawables[3]);

}

}

@Override

public boolean onTouchEvent(MotionEvent event) {

Drawable[] compoundDrawables = getCompoundDrawables();

if (compoundDrawables[2] != null && event.getAction() == MotionEvent.ACTION_UP) {

int eventX = (int) event.getRawX();

int eventY = (int) event.getRawY();

Rect rect = new Rect();

getGlobalVisibleRect(rect);

rect.left = rect.right - 100;

if (rect.contains(eventX, eventY)) {

setText("");

}

}

return super.onTouchEvent(event);

}

}

布局文件就不贴上了,用到的图片资源也贴上,有需要的可以下载试试

这里写图片描述

这里写图片描述

这里写图片描述

android 移除自己view,Android自定义View-带删除和搜索图标的EditText相关推荐

  1. Android仿IOS解锁密码界面-自定义view系列(6)

    Android仿IOS解锁密码界面-自定义view系列 功能简介 主要实现步骤-具体内容看github项目里的代码 xml相关属性设置 Android Studio 代码 Android技术生活交流 ...

  2. Android安卓仿IOS音量调节-自定义view系列(4)

    Android安卓仿IOS音量调节-自定义view系列 功能简介 主要实现步骤 xml相关属性设置 java代码 Android技术生活交流 更多其他页面-自定义View-实用功能合集:点击查看 Gi ...

  3. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  4. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习...

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  5. Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件

    Android绘图机制(三)--自定义View的三种实现方式以及实战项目操作 在Android绘图机制(一)--自定义View的基础属性和方法 里说过,实现自定义View有三种方式,分别是 1.对现有 ...

  6. Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解

    Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...

  7. android app自动更新界面_Android自定义view之模仿登录界面文本输入框(华为云APP)...

    好久不见!!!!!,最近终于挤出时间来更新文章了,废话不多说,直接开始. 效果图如下: 01 分析 1.组合多个控件完成此输入框静态效果 2.hint值上浮下潜动画 3.一些功能 02 步骤 01 自 ...

  8. android 在xml文件中引用自定义View

    在xml中引用自定义view 方法一: [java] view plaincopy <com.test.copytext.CopyText android:layout_width=" ...

  9. android 清空canvas部分内容_Android自定义View实现圆形头像效果

    在我们的APP中通常会遇到,展示圆形头像的需求,一般通过Glide就能实现,但是让我们做一个圆形头像,如果让我们自定义实现这种效果,该怎样做呢? 好,接下来本文通过三种方式来实现这种效果! 注意:这是 ...

最新文章

  1. 中服公司企业信息化的ERP系统选择
  2. 计算机视觉的优点和局限性
  3. 一个典型的后台软件系统的设计复盘——(二)如何id一个事物
  4. 【scala】类的定义和单例对象
  5. Linux自动删除n天前日志
  6. 二进制除法\模2除法
  7. 通过OleDB连接方式,访问Access,Excel数据库.
  8. libco协程库上下文切换原理详解
  9. Openvswitch手册(7): Interfaces
  10. Pytorch实现FGSM(Fast Gradient Sign Attack)
  11. sublime添加到右键的注册表文件
  12. HTML5+css+JS实现LOL官网动态页面DW、vscode页眉加轮播图
  13. Typora 语法结构与功能
  14. 复杂网络的任意子节点的网络最短距离
  15. 测试学习--云测试平台
  16. 两种web crawler方案
  17. 【壁纸】kali linux 2021.1 自带原版壁纸分享
  18. 有人说程序员是一个很高大上又高不可攀的职业,你认同吗?
  19. R语言绘图—快速绘制Lollipop图
  20. windows7 热键查看_创建快捷方式或热键以在Windows 7或Vista中打开任务管理器的“所有用户”视图...

热门文章

  1. Flask 重复启动
  2. shell下function报错
  3. Juniper EX3400堆叠配置 + 链路捆绑配置
  4. 微信在诺基亚手机登录服务器繁忙,马化腾正式宣布:禁止在该手机上登录QQ和微信?网友:诺基亚再见...
  5. error aborting mysql,mysql错误1067,mysql1067错误aborting
  6. java stack empty_java.util.Stack.empty()方法实例
  7. 王者荣耀服务器维护5月22,5月22日王者荣耀更新内容一览
  8. linux卸载dev中的设备,Linux /dev 常见特殊设备介绍与应用
  9. js滚动条下拉一定值_JS逆向 | *APD模拟登录(AES)
  10. oracle 中 to_date 函数的用法