android 实现带清除效果的EditText(附带抖动效果)

本文介绍如何在Android中实现类似iOS的带有清除功能的EditText,包括删除按钮和文字输入抖动提示。通过自定义控件扩展EditText,利用getCompoundDrawables和焦点、内容变化事件来控制删除图标显示和清除功能。同时,文中还提到一种附加的晃动动画效果,用于在输入为空时给出视觉提示。
摘要由CSDN通过智能技术生成

Android一直没有提供类似于ios中自带清除效果的输入框(ios只要只要添加属性即可实现),所以在Android当中 想要实现此效果就需要使用自定义控件的方式实现。

思路:可以使用一个Linearlayout里面横向布局一个EditText和一个删除的图片,监听输入框的焦点和文字变化,设置图片的显隐和点击清除事件。但是这么做些弊端,首先增加了UI布局的层级结构不利于UI结构的优化而且可能会出现文字过长遮挡住图片的情况。所以采用自定义控件继承于EditText,使用getCompoundDrawables获得上下左右添加的图片,通过监听焦点变化和输入内容变化控制周围图片的显隐以及清除事件,(里面还附加了一个晃动的动画,例如当注册时如果输入为空可以进行晃动提示)。

原理十分简单直接上代码:

public class ClearEditText extends EditText implements OnFocusChangeListener,TextWatcher {
    /**
     * 删除按钮的引用
     */
    private Drawable mClearDrawable;
    private boolean hasFoucs;

    public ClearEditText(Context context) {
        this(context, null);
    }
    public ClearEditText(Context context, AttributeSet attrs) {
        // 这里构造方法也很重要,不加这个很多属性不能再XML里面定义
      
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值