文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 自定义EditText输入框带清空按钮

2023-05-31 03:16

关注

Android 自定义EditText输入框带清空按钮

当用户输入字符后 EditText会自动在输入框的内部右侧出现删除按钮

重写EditText达到简化布局的效果

效果图:

Android 自定义EditText输入框带清空按钮

继承EditText

package com.example.myedittexttest;import android.content.Context;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.text.Editable;import android.text.TextWatcher;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.EditText;public class MyEditText extends EditText {private final String TAG = "MyEditText";private Drawable dRight;private Rect rBounds;public MyEditText(Context paramContext) {super(paramContext);initEditText();}public MyEditText(Context paramContext, AttributeSet paramAttributeSet) {super(paramContext, paramAttributeSet);initEditText();}public MyEditText(Context paramContext, AttributeSet paramAttributeSet, int paramInt) {super(paramContext, paramAttributeSet, paramInt);initEditText();}// 初始化edittext 控件private void initEditText() {setEditTextDrawable();addTextChangedListener(new TextWatcher() { // 对文本内容改变进行监听@Overridepublic void afterTextChanged(Editable paramEditable) {}@Overridepublic void beforeTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3) {}@Overridepublic void onTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3) {MyEditText.this.setEditTextDrawable();}});}// 控制图片的显示public void setEditTextDrawable() {if (getText().toString().length() == 0) {setCompoundDrawables(null, null, null, null);} else {setCompoundDrawables(null, null, this.dRight, null);}}@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();this.dRight = null;this.rBounds = null;}@Overridepublic boolean onTouchEvent(MotionEvent paramMotionEvent) {if ((this.dRight != null) && (paramMotionEvent.getAction() == 1)) {this.rBounds = this.dRight.getBounds();int i = (int) paramMotionEvent.getRawX();// 距离屏幕的距离// int i = (int) paramMotionEvent.getX();//距离边框的距离if (i > getRight() - 3 * this.rBounds.width()) {setText("");paramMotionEvent.setAction(MotionEvent.ACTION_CANCEL);}}return super.onTouchEvent(paramMotionEvent);}@Overridepublic void setCompoundDrawables(Drawable paramDrawable1, Drawable paramDrawable2, Drawable paramDrawable3, Drawable paramDrawable4) {if (paramDrawable3 != null)this.dRight = paramDrawable3;super.setCompoundDrawables(paramDrawable1, paramDrawable2, paramDrawable3, paramDrawable4);}}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯