EditText记录
1. 带删除按钮到EditText
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.CycleInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.EditText;import com.example.huangjunjie.myapplication3.R;/*** Created by huangjunjie on 15-1-3.*/
public class ClearEditText extends EditText implements View.OnFocusChangeListener, TextWatcher {/** * 删除按钮的引用 */private Drawable mClearDrawable;public ClearEditText(Context context) {this(context, null);}public ClearEditText(Context context, AttributeSet attrs) {
//这里构造方法也很重要,不加这个很多属性不能再XML里面定义this(context, attrs, android.R.attr.editTextStyle);}public ClearEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}private void init() {
//获取EditText的DrawableRight,假如没有设置我们就使用默认的图片mClearDrawable = getCompoundDrawables()[2];if (mClearDrawable == null) {mClearDrawable = getResources() .getDrawable(R.drawable.icon_clear_edittext);}mClearDrawable.setBounds(0, 0, mClearDrawable.getIntrinsicWidth(), mClearDrawable.getIntrinsicHeight());setClearIconVisible(false);setOnFocusChangeListener(this);addTextChangedListener(this);}/** * 因为我们不能直接给EditText设置点击事件,所以我们用记住我们按下的位置来模拟点击事件 * 当我们按下的位置 在 EditText的宽度 - 图标到控件右边的间距 - 图标的宽度 和 * EditText的宽度 - 图标到控件右边的间距之间我们就算点击了图标,竖直方向没有考虑 */@Overridepublic boolean onTouchEvent(MotionEvent event) {if (getCompoundDrawables()[2] != null) {if (event.getAction() == MotionEvent.ACTION_UP) {boolean touchable = event.getX() > (getWidth() - getPaddingRight() - mClearDrawable.getIntrinsicWidth()) && (event.getX() < ((getWidth() - getPaddingRight())));if (touchable) {this.setText("");}}}return super.onTouchEvent(event);}/** * 当ClearEditText焦点发生变化的时候,判断里面字符串长度设置清除图标的显示与隐藏 */@Overridepublic void onFocusChange(View v, boolean hasFocus) {if (hasFocus) {setClearIconVisible(getText().length() > 0);} else {setClearIconVisible(false);}}/** * 设置清除图标的显示与隐藏,调用setCompoundDrawables为EditText绘制上去 * @param visible */protected void setClearIconVisible(boolean visible) {Drawable right = visible ? mClearDrawable : null;setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], right, getCompoundDrawables()[3]);}/** * 当输入框里面内容发生变化的时候回调的方法 */@Overridepublic void onTextChanged(CharSequence s, int start, int count, int after) {setClearIconVisible(s.length() > 0);}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void afterTextChanged(Editable s) {}/** * 设置晃动动画 */public void setShakeAnimation(){this.setAnimation(shakeAnimation(5));}/** * 晃动动画 * @param counts 1秒钟晃动多少下 * @return */public static Animation shakeAnimation(int counts){Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);translateAnimation.setInterpolator(new CycleInterpolator(counts));translateAnimation.setDuration(1000);return translateAnimation;}
}
2.EditText获取光标位置并插入字符删除字符
1)获取光标位置
int index = editText.getSelectionStart();
2)在光标处插入字符
int index = editText.getSelectionStart();
Editable editable = editText.getText();
editable.insert(index, "aaaa");
3)删除光标前字符
int index = editText.getSelectionStart();
Editable editable = editText.getText();
editable.delete(index-1, index);
3.隐藏光标
EditText et = (EditText) findViewById(R.id.etTest);
//设置光标不显示,但不能设置光标颜色
et.setCursorVisible(false);
4.获得焦点时全选文本
EditText et = (EditText) findViewById(R.id.etTest);
et.setSelectAllOnFocus(true);
5.获取和失去焦点
EditText et = (EditText) findViewById(R.id.etTest);
et.requestFocus(); //请求获取焦点
et.clearFocus(); //清除焦点
6.设置不显示键盘
editText为目标控件
//set not display the keyboardtry {Class<?> editTextClass = EditText.class;Method setShowInputMethod = editTextClass.getMethod("setShowSoftInputOnFocus",boolean.class);try {setShowInputMethod.invoke(editText, false);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}} catch (NoSuchMethodException e) {e.printStackTrace();}
7.设置EditText最大可输入字符
EditText记录相关推荐
- 拨号应用Dialer,更改默认fragment为通话记录。上下左右按键遇到edittext编辑框后继续原来的功能选择。关闭相机录像快门声音,避免快门声音录像录进。
拨号应用Dialer,更改默认fragment为通话记录: vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/dial ...
- 【错误记录】Android 中使用 Kotlin 为 EditText 组件设置文本报错 ( Type mismatch. Required:Editable. Found:String )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android 中使用 Kotlin 开发 , EditText 组件如下 : 布局文件 : <EditTextandroid:id=&q ...
- 项目疑难杂症记录(三):EditText获取不到焦点了?
本篇依然讲的是焦点方面的问题,还是老样子,先看下出问题的现象,gif走起~ 从动图上可以看到,进入二级页面,焦点向下移动,编辑框没有获取到焦点,后向上移动焦点,才获取到,是不是很神奇? 我们知道Edi ...
- Android TextView、EditText显示输入法自带表情,记录一下
参考文章写在首位 Android emoji显示 嘿嘿,其实代码都没有变. 在Android系统中使用系统自带的emoji表情 这篇文章里介绍,emoji表情实际上是一组Unicode编码与一组表情描 ...
- BUG记录:安卓9.0 EditText输入框不显示字符问题
EditText输入密码不显示字符问题 正常显示效果应该是这样: 在9.0系统显示异常,现象如下: 可以看到,上面的两个输入框输入字符的时候都是实时显示的,当光标移动到最下方的输入框的时候,光标都停止 ...
- 一个android记事本的学习过程记录! (一)
2019独角兽企业重金招聘Python工程师标准>>> 一 首先是这个记事本我想实现的几个功能! 1.记录文字: 2.记录图片: 3.可以记录视频: 4.可以查看已经记录的事件: 二 ...
- 在RecyclerView的子布局中使用EditText在数据滚动后消失
2019独角兽企业重金招聘Python工程师标准>>> 同事在新的项目中遇到在RecyclerView的子布局中使用EditText,在第一项输入数据滚动出可视界面后,再次回到第一项 ...
- 笔记32 | UI系列之EditText和AutoCompleteTextView
地址 http://blog.csdn.net/xiangyong_1521/article/details/78499706 目录 EditText AutoCompleteTextView 附 1 ...
- 在EditText里插入图片,基于图库选择之后
现在在做一个便签,用到记录一下. View Code //onActivityResult Uri uri=data.getData();// 通过URI得到图片在系统的路径// String[] p ...
最新文章
- 2.2 vivi虚拟视频驱动测试
- p1522 牛的旅行 Cow Tours
- 马斯克放话:6个月内公测卫星互联网!颠覆5G的将不是6G
- 每日一皮:你有没有过 Bug 变 Feature 的高光时刻?
- 谷歌的算法笔记火了,技术真牛!
- python mssql 报表_Python从mssql向SQLite插入表
- 微服务实践沙龙-上海站
- 支持Flash和JavaScript的图表控件FusionWidgets
- 【李宏毅2020 ML/DL】P60-61 Unsupervised Learning - Deep Generative Model
- Python2.7.3 学习——准备开发环境
- YYKit 学习笔记之 YYLabel
- 教你怎么利用Matlab画散点图
- 水晶报表教程:手把手教你制作基本报表
- 越想越气(拍拍购物过程)
- LaTeX新手半小时速成手册(不速成你打我
- nn.BCELoss和nn.CrossEntropyloss
- 【IO流】初学IO流
- 理财入门之萌萌赚钱观
- DICOM图像的理解与学习
- 什么是BGP线路?什么是BGP机房?