Edittext的TextWatcher的属性及edittext的密码显示与隐藏、Edittext密码圆点格式替换成星号*的形式

之前在项目中多次使用到editext中的这些属性,特别是在项目中的注册、登录、忘记密码的功能中.....,今天正好群中有个刚入门的群友再问,自己也来记录下,也希望对刚入门的朋友有些帮助。

1、edittext的密码显示与隐藏(这个功能其实很简单的)

1)、简单的布局

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/et_read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/iv_eyes"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:scaleType="centerInside"
        android:src="@mipmap/icon_eyes_close" />
</LinearLayout>

2)、edittext的简单代码

这个功能时Edittext+ImageView完成的

iv_eyes.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (isSure) {
            iv_eyes.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.icon_eyes_open));
            et_read.setSelection(et_read.getText().toString().length());
            et_read.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
            isSure = !isSure;
        } else {
            iv_eyes.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.icon_eyes_close));
            setEditTextPassWordShowStyle(et_read);
            et_read.setSelection(et_read.getText().toString().length());
            isSure = !isSure;
        }
    }
});

2、Edittext密码圆点格式替换成星号*的形式

使EditeText密码的圆点形式换成星号*的简单代码:

public void setEditTextPassWordShowStyle(EditText et) {
    et.setTransformationMethod(new PasswordCharSequenceStyle());
}

public class PasswordCharSequenceStyle extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
    }

    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;

        public PasswordCharSequence(CharSequence source) {
            mSource = source;
        }

        public char charAt(int index) {
            return '*';
        }

        public int length() {
            return mSource.length();
        }

        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end);
        }
    }
}

3、Edittext的TextWatcher的属性

这个属性适合edittext需要在它输入中的做监听的功能,例如:在edittext输入中监听输入的长度、输入内容时显示删除图标,输入完成时隐藏删除图标。例子如下

简单的布局如下:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/et_write"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:drawablePadding="-30dp"
        android:inputType="text"
        android:text="" />

    <ImageView
        android:id="@+id/iv_del"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="-50dp"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_search_delete"
        android:visibility="gone" />
</LinearLayout>

简单的代码:

et_wirite.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        iv_del.setVisibility(View.GONE);
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        iv_del.setVisibility(View.VISIBLE);
    }

    @Override
    public void afterTextChanged(Editable s) {
        iv_del.setVisibility(View.VISIBLE);
    }
});
iv_del.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        et_wirite.setText("");
        iv_del.setVisibility(View.GONE);
    }
});

以上就是这些简单的功能。

简单的demo,已经验证无误:https://download.csdn.net/download/smxueer/10411816





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值