EditText之密码显示明文的输入框

这里写图片描述

输入框使用之前文章中的可删除的输入框,可删除的输入框

public class CusPwdEditText extends RelativeLayout {
    private Context mContext;

    private boolean isVisi = true;

    private ImageView visiImage;
    private CusDeleteEditText mPwdEdit;

    public CusPwdEditText(Context context) {
        super(context);
        init(context);
    }


    public CusPwdEditText(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public CusPwdEditText(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }


    private void init(Context context) {
        this.mContext = context;

        visiImage = new ImageView(context);
        visiImage.setId(R.id.pwd_edit);
        visiImage.setImageResource(R.drawable.icon_pwd_hide);
        RelativeLayout.LayoutParams ImageParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        ImageParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        ImageParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
        visiImage.setPadding(dip2px(5), dip2px(5), dip2px(5), dip2px(5));
        visiImage.setLayoutParams(ImageParams);
        visiImage.setOnClickListener(listener);


        mPwdEdit = new CusDeleteEditText(context);
        mPwdEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);

        RelativeLayout.LayoutParams editParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        editParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        editParams.addRule(RelativeLayout.LEFT_OF, R.id.pwd_edit);
        editParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
        mPwdEdit.setLayoutParams(editParams);
        mPwdEdit.setHint(R.string.hint_input_password);
        mPwdEdit.setBackgroundResource(R.color.white);
        mPwdEdit.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
        mPwdEdit.setTextColor(context.getResources().getColor(R.color.black_text_color));

        addView(mPwdEdit);
        addView(visiImage);
    }

    OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isVisi) {
                visiImage.setImageResource(R.drawable.icon_pwd_display);
                mPwdEdit.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            } else {
                visiImage.setImageResource(R.drawable.icon_pwd_hide);
                mPwdEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
            }
            isVisi = !isVisi;
        }
    };

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    private int dip2px(float dpValue) {
        final float scale = mContext.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }
}

使用方法;

        <你的包名.CusPwdEditText
            android:id="@+id/login_phone_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

猜你喜欢

转载自blog.csdn.net/sinat_32089827/article/details/78202062