1.自定义Edittext 实现右侧图标点击清空

package com.dxw.live.view;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.AppCompatEditText;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.MotionEvent; import com.dxw.live.R; public class RightPicClickEditText extends AppCompatEditText {
private Drawable drawableRight; public RightPicClickEditText(Context context) {
super(context);
drawableRight = context.getResources().getDrawable(
R.mipmap.edit_close);
} public RightPicClickEditText(Context context, AttributeSet attrs) {
super(context, attrs);
drawableRight = context.getResources().getDrawable(
R.mipmap.edit_close);
} public RightPicClickEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
drawableRight = context.getResources().getDrawable(
R.mipmap.edit_close);
} @Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
if (TextUtils.isEmpty(text)) {
setCompoundDrawablesWithIntrinsicBounds(null,
null, null, null);
} else {
setCompoundDrawablesWithIntrinsicBounds(null,
null, drawableRight, null);
}
super.onTextChanged(text, start, lengthBefore, lengthAfter);
} // 触摸事件
// 判断DrawableLeft/DrawableRight是否被点击
@Override
public boolean onTouchEvent(MotionEvent event) {
// 触摸状态
if (event.getAction() == MotionEvent.ACTION_UP) {
// 监听DrawableLeft
// if (onDrawableRightListener != null) {
// 判断DrawableLeft是否被点击
Drawable drawableRight = getCompoundDrawables()[];
// 当按下的位置 < 在EditText的到左边间距+图标的宽度+Padding
// if (drawableLeft != null && event.getRawX() 在EditText的到右边间距 - 图标的宽度 - Padding
if (drawableRight != null) {
setText("");
setCompoundDrawablesWithIntrinsicBounds(null,
null, null, null);
// 执行DrawableRight点击事件
// onDrawableRightListener.onDrawableRightClick();
}
// }
}
return super.onTouchEvent(event);
} // 定义一个DrawableLeft点击事件接口
public interface OnDrawableLeftListener {
void onDrawableLeftClick();
} private OnDrawableLeftListener onDrawableLeftListener; public void setOnDrawableLeftListener(OnDrawableLeftListener onDrawableLeftListener) {
this.onDrawableLeftListener = onDrawableLeftListener;
} // 定义一个DrawableRight点击事件接口
public interface OnDrawableRightListener {
void onDrawableRightClick();
} private OnDrawableRightListener onDrawableRightListener; public void setOnDrawableRightListener(OnDrawableRightListener onDrawableRightListener) {
this.onDrawableRightListener = onDrawableRightListener;
}
}

Android 实现的EditText响应drawableRight的点击事件的更多相关文章

  1. 关于百度地图InfoWindow响应自定义布局点击事件

    大概讲解: 在百度地图上显示一个marker,当marker被点击后,显示自定义的View.当自定义的View被点击后,响应不同Button的点击事件.被百度这个infowindo里面的view坑惨了 ...

  2. EditText 双击才能获取点击事件

    在获取EditText点击事件的过程中,发现EditText setOnClickListener事件响应中,只有获取焦点的时候才会响应, 如当焦点在别的控件上时,只能先点击获取焦点,第二次点击才会响 ...

  3. Android ViewPager实现图片标题轮播和点击事件

    我看别人的文章,最喜欢看有图的.然后先找图看. 那我就先上效果图: 实现了图片自动轮播,手动滑动,轮播标题,以及点击事件.下面开始: 一.资源文件: 首先是布局: <?xml version=& ...

  4. Android控件——监听按钮的点击事件

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAroAAAFTCAIAAABZPDiZAAAgAElEQVR4nOy9918UWfb///1jdu2uBs

  5. Android 基础-1.0 按钮4种点击事件

    第一种 测试使用 直接xml添加,平时在自己的测试demo中使用比较多. 1.直接在xml里给按钮添加点击事件 android:onClick="btn_click" 2.按住op ...

  6. 用block响应button的点击事件

    1.继承UIButton : 2.在自己定义的button类中的方法 addTarget:(id)target action:(SEL)action forControlEvents:(UIContr ...

  7. Android listview子控件的的点击事件(转)

    1.先看图,是否是你想要的 2.布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout ...

  8. ListView中响应item的点击事件并且刷新界面

    ---恢复内容开始--- 最近在在实现listview功能中遇到了这个问题: 点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示: 总结:1.要使用not ...

  9. 在Activity中响应ListView内部按钮的点击事件

    最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在A ...

随机推荐

  1. Python学习杂记_8_从程序外部传参的办法sys.argv

    Python用 sys.argv[] 实现从程序外部传参 “外部”的含义,其实就是这些参数不是你在程序中定义的,而是在程序之外通过输入操作传递进来的.sys.argv 会返回一个元组,元组的首个元素即 ...

  2. 属性动画详解一(Property Animation)

    效果图: Android动画有3类: 1.View Animation (Tween Animation) 2.Drawable Animation (Frame Animation) 2.Prope ...

  3. LeetCode OJ-- Maximal Rectangle ***@

    https://oj.leetcode.com/problems/maximal-rectangle/ 给一个二维矩阵,里面只有0 1,求一个最大的矩阵,里面的所有元素都是1. 首先预处理: 0 1 ...

  4. LeetCode OJ-- Jump Game

    https://oj.leetcode.com/problems/jump-game/ 从0开始,根据每一位上存的数值往前跳. 这道题给想复杂了... 记录当前位置 pos,记录可以调到的最远达位置为 ...

  5. iOS数组去重的方法,超级简单

    //最近新发现的一个数组去重,用不着循环,一句代码搞定 //去除数组中重复的 NSArray *oldArr = @[@"1",@"2",@"3&qu ...

  6. Codeforces 785D Anton and School - 2(推公式+乘法原理+组合数学)

    题目链接 Anton and School - 2 对于序列中的任意一个单括号对(), 左括号左边(不含本身)有a个左括号,右括号右边(不含本身有)b个右括号. 那么答案就为 但是这样枚举左右的()的 ...

  7. Mac git 的使用

    1. mac 安装git brew install git 2.初使化 git config --global user.name "mygit" git config --glo ...

  8. mac 安装 gensim包出错

    安装时需要卸载scipy,结果显示 permission之类 加sudo也不行, 必须 得先disable 掉mac的SIP ,方法是重启系统 ,按住command+r ,进行recovers模式,然 ...

  9. 关闭火狐定期向“http://detectportal.firefox.com/”发包

    问题:最近发现火狐总是向http://detectportal.firefox.com/发包 办法:firefox地址栏输入 about:config,然后搜索找到 network.captive-p ...

  10. ALBB 找公共最长连续字母序列的长度

    问题描写叙述 给定一个 query 和一个 text .均由小写字母组成.要求在 text 中找出以相同的顺序连续出如今 query 中的最长连续字母序列的长度. 比如, query为"ac ...