自定义View四
来源:互联网 发布:藤井莉娜开的淘宝店铺 编辑:程序博客网 时间:2024/04/29 19:00
自定义带删除的编辑框EditTextWithDel
思路
- 准备好两张带不同颜色的删除图片
为EditText设置addTextChangedListener监听事件,在afterTextChanged里面设置对应的图片
例如在构造方法里初始化 init();
`private void init(){imgInalble = mContext.getResources().getDrawable(R.mipmap.delete_gray);imgAbel = mContext.getResources().getDrawable(R.mipmap.delete);addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) { setDrawable();} }); setDrawable();}
`
接下来就是设置Drawable方法了,判断,如果输入框有内容,让图片显示,没有内容不现实或者显示一张颜色暗的图片
`//设置删除图片private void setDrawable(){if(length() < 1){ setCompoundDrawablesWithIntrinsicBounds(null,null,imgInalble,null);}else{ setCompoundDrawablesWithIntrinsicBounds(null,null,imgAbel,null); }}
`
最后就是实现点击图片(其实是点击矩形)清空编辑框内的文字了
这里利用Rect来做,网上这种做法应该属于偷懒吧,不过简单.通过判断监听动作行为,如果是按下,则删除
- 得到x,y坐标后再创建矩形rect.
- 利用
getGlobalVisibleRect(rect)
方法获取在视图在屏幕坐标系的偏移量(即偏移量就是图片的宽); - 设置矩形的宽度(50)
判断,如果按下的x,y坐标再矩形内,则文字清空
`//处理删除事件@Overridepublic boolean onTouchEvent(MotionEvent event) {if(imgAbel !=null && event.getAction() == MotionEvent.ACTION_UP){ int eventX = (int) event.getRawX();//整个屏幕 int eventY = (int) event.getRawY(); Log.i(TAG,"eventX= "+eventX +"; eventY= "+eventY); Rect rect = new Rect(); getGlobalVisibleRect(rect);//方法的作用是获取视图在屏幕坐标系中的偏移量 rect.left = rect.right - 50;if(rect.contains(eventX,eventY)){ setText(""); } }return super.onTouchEvent(event);}
`
0 0
- Android 自定义View (四)
- Android 自定义View (四)
- 自定义View四
- 自定义View(四)--自定义ScrollView
- 自定义View(四) 自定义ItemToggleView
- Android自定义View (四) CustomVolumControlBar
- Android自定义View教程(四)
- 自定义view(四) 方形进度条
- Android view 详解(四) 自定义view
- 自定义View(四)View的生命周期
- 自定义View实例(四)----自定义条形柱状图
- Android自定义控件之自定义View(四)
- 自定义View解析之自定义View实战(四)
- 自定义View(四)之提取和封装自定义View
- 自定义view(四):自定义view实现动态按钮
- android自定义控件(四) View中的方法
- 初学Android,开发自定义的View(四)
- android自定义控件(四) View中的方法
- lightoj 1421 Wavio Sequence (最长严格单峰子序列)
- 函数返回对象和返回对象的引用的区别
- const使用
- 图解如何将Ubuntu上的Qt程序交叉编译出可在ARM平台运行的程序(五部曲)
- Docker:bash: vi: command not found
- 自定义View四
- GDB 资源汇总
- 自定义View五
- [LeetCode] 236. Lowest Common Ancestor of a Binary Tree
- 二进制中1的个数
- Android使用帧动画内存溢出解决方法
- 自定义View六
- Keep on coding 8-26
- 中东网络暗战:针对叙利亚反对派的网络攻击Group5