Android实现仿IOS带清空功能的文本输入框
- /**
- * @类名:ClearableEditText
- * @功能描述:
- * @作者: William Xu
- * @创建日期:2013-4-13
- * @修改人:
- * @修改日期:
- * @修改备注:
- * @版本号:1.0
- */
- public class ClearableEditText extends EditText implements
- OnFocusChangeListener, TextWatcher {
- private Drawable xD;
- public ClearableEditText(Context context) {
- super(context);
- init();
- }
- public ClearableEditText(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
- public ClearableEditText(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init();
- }
- private void init() {
- xD = getCompoundDrawables()[2];
- if (xD == null) {
- xD = getResources()
- .getDrawable(R.drawable.search_clear);
- }
- xD.setBounds(0, 0, xD.getIntrinsicWidth(), xD.getIntrinsicHeight());
- setClearIconVisible(false);
- super.setOnFocusChangeListener(this);
- addTextChangedListener(this);
- }
- @Override
- public void setOnFocusChangeListener(OnFocusChangeListener f) {
- this.f = f;
- }
- private OnFocusChangeListener f;
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (getCompoundDrawables()[2] != null) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- boolean tappedX = event.getX() > (getWidth()
- - getPaddingRight() - xD.getIntrinsicWidth());
- if (tappedX) {
- setText("");
- event.setAction(MotionEvent.ACTION_CANCEL);
- }
- }
- }
- return super.onTouchEvent(event);
- }
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- if (hasFocus) {
- setClearIconVisible(getText().length() > 0);
- } else {
- setClearIconVisible(false);
- }
- if (f != null) {
- f.onFocusChange(v, hasFocus);
- }
- }
- protected void setClearIconVisible(boolean visible) {
- Drawable x = visible ? xD : null;
- setCompoundDrawables(getCompoundDrawables()[0],
- getCompoundDrawables()[1], x, getCompoundDrawables()[3]);
- }
- @Override
- public void onTextChanged(CharSequence s, int start, int count,
- int after) {
- setClearIconVisible(s.length() > 0);
- }
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- // TODO Auto-generated method stub
- }
- @Override
- public void afterTextChanged(Editable s) {
- // TODO Auto-generated method stub
- }
- }
转载于:https://blog.51cto.com/williamx/1195051
Android实现仿IOS带清空功能的文本输入框相关推荐
- Android安卓仿IOS音量调节-自定义view系列(4)
Android安卓仿IOS音量调节-自定义view系列 功能简介 主要实现步骤 xml相关属性设置 java代码 Android技术生活交流 更多其他页面-自定义View-实用功能合集:点击查看 Gi ...
- Android高仿iOS Messages聊天气泡
Android高仿iOS Messages聊天气泡 一.目标 二.功能分析 三.实现代码 1. ChatItem 2. DateItem 3. TextItem 4. PhotoItem 5. Cha ...
- Android高仿iOS Messages录音操作按钮
Android高仿iOS Messages录音操作按钮 目录 一.目标 二.功能分析 三.实现效果 四.实现过程 五.开发过程回顾 六.接下来 七.Finally 前面的2次开发,分别完成了实现录音和 ...
- android qq红点,Android高仿QQ小红点功能
先给大家展示下效果图: 绘制贝塞尔曲线: 主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~ 整体思路: 1.当小红点静 ...
- Android O 和 iOS 11 新功能对比
Apple 和 Google 都在推出 iOS 和 Android 的下一版本.Google 在上周推出了 Android Oreo (8.0 版本),Apple 将在九月份推出 iPhone 8 后 ...
- android菊花动画,Android实现仿iOS菊花加载圈动画效果
常见的实现方式 切图,做旋转动画 自定义View,绘制效果 gif图 1.切图会增加体积,但相对简单,不过在换肤的场景下,会使用不同颜色,需要准备多张图,不够灵活. 2.由于自定义的好处,不同颜色只需 ...
- android 仿ios带弹簧效果的ScrollView
说ios的效果确实不错,今天就参照别人的代码,修改bug一箩筐,优化体验一大堆. 废话不多说,上代码: /** * 仿ios弹簧效果 scrollview 带阻尼 * @author sunxia ...
- android高仿ios控制中心,高仿ios控制中心安卓版
高仿ios控制中心安卓版是一款非常好用的安卓仿苹果手机控制中心的软件,能够让使用安卓手机的朋友们随时体验苹果手机的系统,操作简单方便,软件也是非常稳定的,大家可放心的下载使用,感兴趣的用户们就前来下载 ...
- android 高仿ios开关,Android自定义view仿IOS开关效果
本文主要讲解如何在 Android 下实现高仿 iOS 的开关按钮,并非是在 Android 自带的 ToggleButton 上修改,而是使用 API 提供的 onDraw.onMeasure.Ca ...
- switch+ios风格android,安卓仿IOS Switch开关按钮
老规矩,先放上一张图,对比一下安卓原生实现的Switch按钮和仿IOS实现的区别: Switch效果对比 下面主要讲讲仿IOS Switch控件的实现,其实安卓Switch控件中提供了两个属性让我们去 ...
最新文章
- CentOS 6.4下安装中文输入法
- iphone5新尺寸
- 性能php 教程,提高PHP性能效率的几个技巧
- Python 换行符
- 交换字典的key和value
- linux中lsattr命令,在Linux中用chattr和lsattr命令管理文件和目录属性
- 阿里“去 IOE”十二年,弹性计算如何二次去 I 和 E?
- Android RatingBar使用Kotlin
- android.appwidget-AppWidgetManager
- Apache Qpid Proton 0.16.0,轻量通信库
- JavaScript 优先队列
- 离散数学期末复习概念_复习第1部分中的基本概念
- 机器学习防止模型过拟合的方法知识汇总
- windows cmd修改ip地址
- php 高斯分布,多元高斯分布完全解析
- 微信lbs开发java_微信LBS获取
- Jupyter 进行文字、图片格式编辑
- rust巨型采矿机_【rust巨型挖掘机在哪加柴油】专区-挖掘机-铁甲网
- 科研 | 心理学在线科研历史,你真的了解它吗?
- The power input for PSU 2 is lost
热门文章
- xp计算机保护系统,XP系统总是弹出“Windows文件保护”窗口提示的解决方法
- HDU 1394 Minimum Inversion Number(线段树求逆序对)
- SQL Serever学习14——存储过程和触发器
- source ./ 和 . 的区别
- 简单实现ToolStripMenuItem(菜单栏)的单选效果
- WF4.0 RC 对比 Beta2 的变化
- Flex 与外部的数据通信(HTTPService,URLLoader和URLRequest)
- 【SpringBoot_ANNOTATIONS】生命周期 04 BeanPostProcessor 后置处理器
- java 既不是内部命令也不是外部命令的解决办法
- elk怎么读的_大数据采集和抽取怎么做?这篇文章终于说明白了!