`

一个小项目自定义editText

 
阅读更多
public class MyEditText extends EditText{
    private Context mContext;
    private Drawable drawable;
    private Drawable bgDrawable;

    public MyEditText(Context context) {
        super(context);
        mContext = context;
        init();
    }

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mContext = context;
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        init();
    }
    private void init(){
        setBackgroundResource(R.drawable.shape_my_edit);
        drawable = mContext.getResources().getDrawable(R.drawable.delete);
        bgDrawable = mContext.getResources().getDrawable(R.drawable.login_ok);
        addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                setDrawable();
            }
            @Override
            public void afterTextChanged(Editable s) {}
        });
    }
    private void setDrawable(){
        if(length() < 1){
            setCompoundDrawablesWithIntrinsicBounds(null,null,null,null);
        }else if(length() == 11){
            setCompoundDrawablesWithIntrinsicBounds(null,null, bgDrawable,null);
        }else{
            setCompoundDrawablesWithIntrinsicBounds(null,null, drawable,null);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (drawable != null && event.getAction() == MotionEvent.ACTION_UP) {
            int eventX = (int) event.getRawX();
            int eventY = (int) event.getRawY();
            Rect rect = new Rect();
            getGlobalVisibleRect(rect);
            rect.left = rect.right - 50;
            if(rect.contains(eventX, eventY))
                setText("");
        }
        return super.onTouchEvent(event);
    }
}
效果图见附件

 

  • 大小: 1.3 KB
  • 大小: 2.3 KB
  • 大小: 2.3 KB
分享到:
评论

相关推荐

    自定义EditText带加减的

    大家在做商城购物类的APP时,肯定遇到过需要自定义带加减的EditText 那么我上传的这个自定义的EditText: 1.可以根据个人的实际UI需求,修改成自己喜欢的颜色和形状。 2.里面的加和减的业务逻辑判断已完善,大部分...

    自定义editText

    4. 如果想要实现全局引用,可以将自定义的EditText控件封装到一个库项目中,然后在其他项目中通过Gradle依赖引入,或者将其源码复制到每个需要用到的项目中。 5. 在使用自定义EditText的地方,替换原有的EditText...

    Android自定义EditText

    在Android开发中,自定义EditText控件是一种常见的需求,它可以让开发者根据应用的特定需求定制输入框的样式、行为和功能。本篇文章将深入探讨如何在Android中实现自定义EditText,帮助开发者拓展其应用程序的用户...

    自定义edittext加入左边点击事件

    首先,我们需要创建一个新的自定义Edittext类,继承自Android的EditText。在自定义类中,我们可以重写onDraw方法来绘制额外的元素,如左边的图片,并添加点击监听器来处理点击事件。这里,描述中提到了“加入了接口...

    自定义EditText实现登录用户名和密码输入

    本文将详细介绍如何通过自定义EditText控件实现一个功能完善的登录用户名和密码输入框,包括输入时显示删除按钮以及密码的星号加密显示。我们将讨论以下几个关键知识点: 1. **自定义EditText** 自定义View是...

    安卓EditText输入框相关-Android自定义edittext(实现删除手机号码样式选中未选中底部状态改变.rar

    5. **自定义EditText类**: 创建一个新的Java类继承自EditText,将上述定制的功能集成到这个新类中。这样可以方便地在项目中重复使用这个自定义组件,并保持代码的整洁和模块化。 6. **代码实现**: 压缩包中的代码...

    自定义EditText控件

    本篇文章将深入探讨如何创建一个自定义的`EditText`控件,基于提供的"CancelEditText"这个例子,我们将学习到以下知识点: 1. **自定义视图类**: 首先,我们需要创建一个新的Java类,继承自`EditText`。这样,我们...

    Android自定义EditText实现带清除功能的输入框

    在项目中,你可以将这个自定义EditText作为一个自定义组件封装起来,方便在多个地方复用。这可以通过创建一个新的Java类继承自EditText,并在其中包含上述逻辑。这样,只需引入这个自定义组件,就可以轻松地在任何...

    切换密码明文密文的自定义EditText

    标题"切换密码明文密文的自定义EditText"所指的是一个特定的UI控件,它允许用户在输入密码时自由地切换显示模式,即在明文(可见字符)和密文(隐藏字符,通常显示为星号或圆点)之间切换。这种功能提供了更好的用户...

    Android自定义EditText,实现分割输入内容效果

    然而,为了提供更加丰富的用户体验,开发者有时需要自定义EditText,实现特定的输入效果。本篇将详细讲解如何在Android中自定义EditText,实现分割输入内容的效果。 首先,理解这个效果:通常,EditText会连续显示...

    android 自定义带删除按钮的EditText

    这个自定义的EditText不仅提供文本输入功能,还允许用户通过点击一个小的删除图标来清除输入的内容。下面我们将详细介绍实现这一功能的过程。 首先,我们需要创建一个新的Java类,继承自EditText。在这个自定义类中...

    CustomEditText,简单的自定义EditText,适用于类似Android的Instagram.zip

    本文将深入探讨如何创建一个简单的自定义EditText,这个自定义组件名为"CustomEditText",并讨论其在类似Instagram应用中的应用场景。这个开源项目可以从提供的压缩包"CustomEditText-master"中获取。 首先,我们从...

    随手指移动的自定义edittext

    这个一个可随手指移动的自定义edittext,下载后直接放到你的项目里运行就可以了,记得要在xml文件里定义这个editext的id,width,height等属性。

    android方块密码输入框 自定义EditText

    5. 编写对应的XML布局文件,将`MNPasswordEditText`作为一个可复用的组件引入项目中。 在实际开发中,这样的自定义控件可以极大地提升应用的专业形象,并为用户提供独特的交互体验。如果你的项目也需要这样的功能,...

    自定义EditText_密码明文切换_点击清空输入框

    至此,我们已经成功地创建了一个具有密码明文切换和点击清空功能的自定义EditText。这个自定义控件可以轻松集成到你的Android应用中,提供更好的用户交互体验。记住,自定义组件的关键在于理解基本组件的工作原理,...

    自定义Edittext 带删除按钮的 Edittext 附带旋转透明动画效果

    本文将深入探讨如何创建一个带有删除按钮的自定义EditText,并实现输入内容时按钮出现,输入框为空时按钮隐藏的功能,同时还会涉及旋转和透明度变化的动画效果。 首先,我们需要创建一个新的Java类,继承自EditText...

    自定义带下滑线的EditText

    本篇文章将详细探讨如何创建一个自定义的带有下滑线的`EditText`。 首先,我们要理解`EditText`的基本结构。`EditText`继承自`TextView`,提供了文本输入和编辑的功能。在Android Studio中,我们通常通过XML布局...

    安卓EditText输入框相关-Android自定义EditText实现带清除功能的输入框.rar

    总之,Android自定义EditText实现带清除功能的输入框是一个常见的需求,它可以通过组合基本的UI组件和监听事件来实现。通过对代码的深入理解和实践,开发者可以更好地掌握Android界面开发的技巧。

    Android开发 自带清除按钮 密码可见 自定义EditText输入框

    总结来说,这个自定义EditText组件结合了清除按钮、密码可见切换和动态效果,是提高Android应用输入体验的利器。开发者可以根据需求进一步定制,例如添加更多输入类型的支持,或者扩展更多交互功能,以满足不同应用...

    自定义牛逼的EditText特效输入框

    通过深入理解这个项目的源代码,开发者不仅可以学习到如何自定义EditText,还能提高对Android UI组件的掌握程度,提升自己的编程技能。 总结来说,自定义牛逼的EditText特效输入框是一个优秀的Android开发资源,它...

Global site tag (gtag.js) - Google Analytics