Android 实现的EditText响应drawableRight的点击事件
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的点击事件的更多相关文章
- 关于百度地图InfoWindow响应自定义布局点击事件
大概讲解: 在百度地图上显示一个marker,当marker被点击后,显示自定义的View.当自定义的View被点击后,响应不同Button的点击事件.被百度这个infowindo里面的view坑惨了 ...
- EditText 双击才能获取点击事件
在获取EditText点击事件的过程中,发现EditText setOnClickListener事件响应中,只有获取焦点的时候才会响应, 如当焦点在别的控件上时,只能先点击获取焦点,第二次点击才会响 ...
- Android ViewPager实现图片标题轮播和点击事件
我看别人的文章,最喜欢看有图的.然后先找图看. 那我就先上效果图: 实现了图片自动轮播,手动滑动,轮播标题,以及点击事件.下面开始: 一.资源文件: 首先是布局: <?xml version=& ...
- Android控件——监听按钮的点击事件
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAroAAAFTCAIAAABZPDiZAAAgAElEQVR4nOy9918UWfb///1jdu2uBs
- Android 基础-1.0 按钮4种点击事件
第一种 测试使用 直接xml添加,平时在自己的测试demo中使用比较多. 1.直接在xml里给按钮添加点击事件 android:onClick="btn_click" 2.按住op ...
- 用block响应button的点击事件
1.继承UIButton : 2.在自己定义的button类中的方法 addTarget:(id)target action:(SEL)action forControlEvents:(UIContr ...
- Android listview子控件的的点击事件(转)
1.先看图,是否是你想要的 2.布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout ...
- ListView中响应item的点击事件并且刷新界面
---恢复内容开始--- 最近在在实现listview功能中遇到了这个问题: 点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示: 总结:1.要使用not ...
- 在Activity中响应ListView内部按钮的点击事件
最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在A ...
随机推荐
- Scrapy笔记:使用代理ip
scrapy框架使用代理ip的基本思路是修改请求对象中的meta['proxy']的值,将代理ip赋值给这个属性.遵循这个思路,只要是生成Request对象的地方都可以设置Request的值. dow ...
- python名词解释(生成器,匿名函数)
1.生成器:能够保持状态的迭代器,下次进去还是之前出来的状态 http://www.oschina.net/translate/improve-your-python-yield-and-genera ...
- 当一个窗体上有PageControl 控件时,是先执行 FormShow呢,还是先执行PageControl 的 TabSheet2Show呢
答案是 先执行 TabSheet2Show ,总算知道了,顺便推理 Onshow事件的执行顺序是 从内到外,先执行容器内的控件的事件,再执行 窗体的事件
- springBoot 定时器
程序入口类中加入注解 @EnableScheduling 配置定时任务为并行 @Slf4j @Configuration public class ScheduledConfig implements ...
- springBoot 程序入口
入口类要放在首个package 这样它能扫到所有的包 @SpringBootApplication @EnableScheduling public class App { public static ...
- 腾讯云使用liveRoom开启直播时,报“房间已存在”错误?
利用腾讯云roomService服务,移动直播,创建房间api,CreateRoom时有时报“房间已存在”错误. 分析流程发现,CreateRoom会传入roomId到roomService后台,后台 ...
- ASP.NET MVC 利用Razor引擎生成静态页
实现原理及步骤: 1.通过ViewEngines.Engines.FindView查找到对应的视图,如果是部分视图,则用:ViewEngines.Engines.FindPartialView: 2. ...
- 爬虫学习笔记(三)requests模块使用
前面在说爬虫原理的时候说了,就写代码自动化的获取数据,保存下来数据,那怎么写代码来请求一个网址,获取结果呢,就得用requests模块了. 这篇博客说一下requests模块的使用,requests模 ...
- linux文本处理常用命令
linux文本处理常用命令 linux文本处理命令:grep.sed.printf.awk 1.grep grep的作用是按行查找字符,输出包含字符的行. #从文件查询 grep 'hello' ...
- Loj #6287 诗歌
link: https://loj.ac/problem/6287 一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列.... 但这太大材小用了(而且很可能被 ...