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 ...
随机推荐
- HttpModel 和 HttpHandle
页面的请求过程: HttpRequest-> inetinfo.exe-> aspnet_isapi.dll-> Http pipeline(命名管道)-> aspnet_wp ...
- 这一次,我连 web.xml 都不要了,纯 Java 搭建 SSM 环境!
在 Spring Boot 项目中,正常来说是不存在 XML 配置,这是因为 Spring Boot 不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭 ...
- Akka之BackoffSupervisor
一.背景 最近在开发一个项目,项目的各模块之间是使用akka grpc传输音频帧的,并且各模块中的actor分别都进行了persist.本周在开发过程中遇到了一个bug,就是音频帧在通行一段时间后,整 ...
- 使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话
使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话 因为公司有多台服务器,所以session要保存在sql server上,因此要在数据库中建立存放se ...
- 记录一次eclipse的错误:“server tomcat v7.0 server at localhost was unable to start within 45 seconds”的问题解决思路
如果配到上述问题,可以参考网上查找的方法,如下: http://stackoverflow.com/questions/6468520/server-tomcat-v6-0-server-at-loc ...
- 蒙特卡洛法MATLAB
%%unifrnd函数的使用 %unifrnd函数可以创建随机的连续均匀分布的数组,一般式为R=unifrnd(A,B); %A和B是标量或者相同维数的行向量或者列向量.R=unifrnd(A,B,[ ...
- MFC中 自定义消息
想在对话框显示出来后立即执行一段代码. 方法之一是自定义消息,即添加一个自定义的消息在消息队列中等待对话框初始化之后从消息队列中读取消息执行代码. 在OnInitDialog返回之前post一个自定义 ...
- 【前端GUI】—— 前端设计稿切图通用性标准
前言:公司在前端组和视觉组交接设计稿切图的时候,总会因为视觉组同事们对前端的实现原理不清楚而出现各种问题,在用的时候还得再次返工,前端组同事们一致觉得应该出一份<设计稿切图通用性标准文件> ...
- jmeter 压测工具
Apache jmeter 压力测试 java 环境安装 https://www.cnblogs.com/smyhvae/p/3788534.html 下载地址和文档 http://itopic.or ...
- 【LeetCode】Search in Rotated Sorted Array——旋转有序数列找目标值
[题目] Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...