自定义控件:自定义密码输入框

自定义密码输入框,实现可以切换密码是否可见,删除以及焦点状态改变是背景框颜色的改变

注:存在部分小bug。bug如下。欢迎大神帮忙指正

  • 多行输入时删除图片被挤出可视范围
  • 多行输入时焦点线被挤出可视范围
  • 输入文字长度过长时,会出现在右侧图片底部
  • 每次切换密码是否可见时焦点边框的位置会发生改变

效果图也十分简单,和普通的editText几乎无区别,
只有在获取焦点时,下划线颜色的改变以及出现显示隐藏密码图标和删除图标,具体效果就不展示了,直接拷贝代码,更换图片文件就能使用。

代码如下

package com.xxxx.Login;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.appcompat.widget.AppCompatEditText;

import com.minimaxhk.cmis.R;

public class LoginPassWordEditText extends AppCompatEditText {
   
    /**
     * 底部线的默认颜色
     */
    private       int      downLineDefaultColor;
    /**
     * 底部线获取焦点颜色
     */
    private       int      downLineFocusColor;
    /**
     * 底部线的画笔
     */
    private       Paint    downLinePaint;
    /**
     * 清除图片的画笔
     */
    private       Paint    clearPaint;
    /***
     * 右侧要显示的图片
     */
    private       Drawable iconRightDrawable;
    /***
     * 显示隐藏密码的图标
     */
    private       Bitmap   iconRightContent;
    /**
     * 清除内容图标
     */
    private       Bitmap   iconClear;
    /***
     * 是否获取焦点
     */
    private       boolean  hasFocus;
    /***
     * 当前是否显示密码内容
     */
    private       boolean  isShow  = false;
    /***
     * 画出的两个图的间距
     */
    private final int      PADDING = 50;

    public LoginPassWordEditText(Context context) {
   
        this(context, null);
    }

    public LoginPassWordEditText(Context context, AttributeSet attrs) {
   
        this(context, attrs, R.attr.editTextStyle);
    }

    public LoginPassWordEditText(Context context, AttributeSet attrs, int defStyleAttr) {
   
        super(context, attrs, defStyleAttr);
        init();
    }

    /**
     * 初始化操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值