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 ...
随机推荐
- Javascript中函数声明与函数表达式的不同
定义函数的方式有两种:一种是函数声明,另一种是函数表达式. 函数声明的语法如下: function functionName(arg0,arg1,arg2){ //函数体 } 函数表达式的语法如下: ...
- php --图片加图片水印
最近在做一个视频网站需要视频有一个封面图片,但是不能是普通的图片,能让别人一眼看出来是 视频,所以我就在图片上面加了视频播放器的那种水印,具体代码如下: <?php/** * 图片加水印(适用于 ...
- getchar吸收回车
#include "stdio.h" int main() { int a; char b,c; scanf("%d",&a); c = getchar ...
- (转)十步完全理解 SQL
十步完全理解 SQL 目录[-] 10个简单步骤,完全理解SQL 1. SQL 是一种声明式语言 2. SQL 的语法并不按照语法顺序执行 3. SQL 语言的核心是对表的引用(table refer ...
- Codeforces 766E Mahmoud and a xor trip(树形DP)
题目链接 Mahmoud and a xor trip 树形DP.先考虑每个点到他本身的距离和,再算所有点两两距离和. 做的时候考虑二进制拆位即可. #include <bits/stdc++. ...
- 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡
Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段.Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群 ...
- JLOI2018 日志
JLOI2018 今年有幸参加吉林省的省选,考过之后在这里写一下总结和感受. DAY1: t1(chess):首先看到题目,第一想法是暴力,上来直接写了暴力,枚举所有的情况,再在这些情况里找到差值最大 ...
- python 关键词
一.python关键字 1. and :表示逻辑判断 [与] a = '1' b = 1 if a and b: print('Hello Python') 2.as :单独没有实际意思,常与wi ...
- Scut游戏服务器引擎之新手入门
1. 开发语言:Scut提供C#或Python两种脚本语言开发,Python脚本的性能会比较差,建议使用编译执行的C#代码: 2. 运行平台:Scut可以Window与Linux平台上运行,Linux ...
- 使用ssh从外网访问内网
一.场景如下: 各个角色的对应关系如下: 角色 描述 APP 个人笔记本,属于内网IP sshd server 公网 VPS ( 映射端口: port 2222 ),拥有公网IP ssh client ...