编写clearedit的安卓控件
1.写一个自定义的控件
public class ClearEditText extends AppCompatEditText implements
View.OnFocusChangeListener, TextWatcher { public Drawable mClearDrawable;
private boolean hasFocus; private static final String TAG = "ClearEditText"; public ClearEditText(Context context, AttributeSet attrs) {
super(context, attrs); init();
}
public void init(){
//右侧清除按钮的图片资源
mClearDrawable = getCompoundDrawables()[]; if(mClearDrawable==null){
mClearDrawable = getResources().getDrawable(R.drawable.i_delete);
} mClearDrawable.setBounds(,,mClearDrawable.getIntrinsicWidth(), mClearDrawable.getIntrinsicHeight()); //设置清除按钮隐藏
setClearIconVisble(false);
//设置焦点改变的监听
setOnFocusChangeListener(this);
//设置输入框里面内容发生改变的监听
addTextChangedListener(this);
}
//设置焦点改变的监听 @Override
public boolean onTouchEvent(MotionEvent event) { if(event.getAction()== MotionEvent.ACTION_UP){
if(getCompoundDrawables()[]!=null){
Boolean touchable = event.getX()>(getWidth()-getTotalPaddingRight()) && (event.getX() < ((getWidth() - getPaddingRight())));
if(touchable){
this.setText("");
}
}
}
return super.onTouchEvent(event);
} /*
* 设置清除按钮的样式
* */
private void setClearIconVisble(Boolean visible){
Drawable right =visible ?mClearDrawable :null;
setCompoundDrawables(getCompoundDrawables()[],getCompoundDrawables()[],right,getCompoundDrawables()[]);
} /*
* 判断是否显示清除标签的方法
* */
private void showClearIcon(){ if(hasFocus && getText().length()>){ setClearIconVisble(true);
}else{
setClearIconVisble(false);
}
} @Override
public void onFocusChange(View view, boolean b) { hasFocus=b;
showClearIcon();
} @Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
showClearIcon();
} @Override
public void afterTextChanged(Editable editable) { }
}
2.在布局文件中使用它
<com.lingdangmao.demo_zidingyi_textview.ClearEditText
android:id="@+id/clearedit"
android:background="@drawable/rounded_edittext"
android:drawablePadding="8dp"
android:singleLine="true"
android:drawableLeft="@drawable/search"
android:drawableRight="@drawable/i_delete"
android:hint="请输入要搜索的商品"
android:imeOptions="actionSearch"
android:layout_width="match_parent"
android:layout_height="45dp" />
3.在activity里面写点击回车的执行逻辑
public class MainActivity extends AppCompatActivity implements View.OnKeyListener { private ClearEditText clearEditText;
private String txt;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); clearEditText =findViewById(R.id.clearedit);
clearEditText.setOnKeyListener(this);
} @Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
//这里要做下keyEvent.getAction()==KeyEvent.ACTION_UP,防止执行2次一样的操作
if(i==keyEvent.KEYCODE_ENTER && keyEvent.getAction()==KeyEvent.ACTION_UP){
txt=clearEditText.getText().toString().trim();
if(!TextUtils.isEmpty(txt)){
//点击后的具体逻辑写在这里
Log.d(TAG, "onKey: "+txt);
}
}
return false;
}
}
4.完成
有个问题,不知道为什么不能设置drawright的图片,只能用默认的删除图片
编写clearedit的安卓控件的更多相关文章
- 关于VCL的编写 (一) 如何编写自己的VCL控件
如何编写自己的VCL控件 用过Delphi的朋友们,大概对Delphi的最喜欢Delphi的不是他的强类型的pascal语法,而是强大的VCL控件,本人就是一位VCL控件的爱好者. VCL控件的开源, ...
- 安卓控件RecycleView的简单使用
RecycleView的使用 目录 RecycleView的使用 技术概述 技术详述 遇到问题和解决 总结 参考文献 技术概述 RecycleView是谷歌官方对ListView的改进(并不是替代), ...
- 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等
本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...
- 安卓控件获取器uiautomatorviewer初体验:"unable to connect to the adb. check if adb is installed correctly"
解决方法:转自:https://plus.google.com/108487870030743970488/posts/2TrMqs1ZGQv Challenge Accepted:1. Screen ...
- 梦想CAD控件安卓控件事件
MxDrawActivity.commandEvent 命令调用事件. 参数 说明 int iCommand 命令ID,这个ID用户自已来取的,只要多个命令ID不重复就可以 代码实现如下: publi ...
- 安卓控件支持HTML标签
http://www.cnblogs.com/xqxacm/p/5092557.html
- Android 轮换控件
首先是控件轮换 一.创建主布局 1.用到的控件是 TextSwitcher (文本轮换) 那么其他对应的也就是 ImageSwitcher (图片轮换) <LinearLayout xmlns: ...
- 第二十九篇:使用SOUI的SMCListView控件
列表控件是客户端应用最常用的控件之一.列表控件通常只负责显示数据,最多通知一下APP列表行的选中状态变化. 现在的UI经常要求程序猿在列表控件里不光显示内容,还要能和用户交互,显示动画等等,传统的列表 ...
- Android基本控件之GridView
我们在使用手机的过程中,会看到一些图片配上文字的一些情况,今天我们就来介绍一下安卓控件的GridView GridView组件用来以网格方式排列视图,与矩阵类似,当屏幕上有很多元素(文字.图片或其他元 ...
随机推荐
- ctf题目writeup(9)
继续刷题,找到一个 什么 蓝鲸安全的ctf平台 地址:http://whalectf.xin/challenges (话说这些ctf平台长得好像) 1. 放到converter试一下: 在用十六进制转 ...
- ABAP CDS ON HANA-(10)項目結合して一つ項目として表示
Numeric Functions ABS(arg) CEIL(arg) DIV(arg1, arg2) DIVISION(arg1, arg2, dec) FLOOR(arg) MOD(arg1, ...
- C# 集合之Dictionary详解
开讲. 我们知道Dictionary的最大特点就是可以通过任意类型的key寻找值.而且是通过索引,速度极快. 该特点主要意义:数组能通过索引快速寻址,其他的集合基本都是以此为基础进行扩展而已. 但其索 ...
- 汇编实验14:访问CMOS RAM
汇编实验14:访问CMOS RAM 任务 编程,以“年/月/日 时:分:秒”的格式,显示当前的日期,时间. 预备知识 CMOS存储当前时间的信息:年.月.日.时.分.秒.这六个信息的长度均为1个字节, ...
- cloudera manager服务迁移(scm数据库在postgresql上,其他amon,rman,oozie,metastore等在mysql上)
公司线上大数据集群,之前用的是公有云主机,现在换成了自己idc机房机器,需要服务迁移,已下为测试: 1.备份原postgresql数据库: pg_dump -U scm scm > scm.sq ...
- 洛谷P3958 奶酪
题目链接 这道题貌似可以用BFS来写吧qwq. 我用的是并查集,把联通的洞合并在同一个几何中,最后只需要判断是否存在上表面和下表面有相同集合的洞即可. 但是需要注意的是还有这样的一种情况:有一个大洞贯 ...
- web框架与爬虫
所有的web框架 http://www.cnblogs.com/wupeiqi/articles/5341480.html 爬虫技术 http://www.cnblogs.com/wupeiqi/ar ...
- linux shell中读写操作mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- 【BZOJ 1269】文本编辑器
题目 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对"文本编辑器"做了一个抽象的定义: Move k:将 ...
- Qt 实现在隐藏标题栏情况下,窗口的缩放(未成功)
呃,这是一个悲剧的版本,在这版本中,我按照网上大神的说法,试了一下,但是没有效果,不知道出错在了那里,和昨天一样,也是,没有理想的效果,这里贴上代码,记录一下 资料连接:放评论 需要包含头文件 #in ...