Android Edittext输入密码时显示密码和隐藏密码

2022-07-31 11:27:54

每一个App都少不了登录模块

登录模块的校验其实都是后端来进行处理的,移动端要做的工作相对较少

重要的一个环节就是为密码添加隐藏和显示这个基本的功能

我们一般写密码输入框时都会使用Edittext来进行输入操作

edittext提供了setTransformationMethod这个API来进行输入字符的转换

//隐藏回车
etRegisterPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

//不能用换行回车
etRegisterPassword.setTransformationMethod(SingleLineTransformationMethod.getInstance());

//密码类型
etRegisterPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());

ReplacementTransformationMethod是一个抽象类,前面两个都是继承于这个抽象类,很明显就是替换,我们可以自己继承这个类实现自己需要的TransformationMethod

献上一份将密码转换为*字符的转换类

/**
 * Author:29117
 * Time: 2019-3-20.  下午 6:31
 * Email:2911743255@qq.com
 * ClassName: AsteriskPasswordTransformationMethod
 * Description:输入密码变为***
 */
public class AsteriskPasswordTransformationMethod 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; // Store char sequence
        }

        @Override
        public char charAt(int index) {
            return '*'; // This is the important part
        }

        @Override
        public int length() {
            return mSource.length(); // Return default
        }

        @Override
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }

    }
}

隐藏密码:

etRegisterPassword.setTransformationMethod(new AsteriskPasswordTransformationMethod());//隐藏密码

显示密码:

etRegisterPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//显示密码

 再献上一份大小写转换的工具


 public class AllCapTransformationMethod extends ReplacementTransformationMethod {

 

        @Override

        protected char[] getOriginal() {

            char[] aa = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

            return aa;

        }

 

        @Override

        protected char[] getReplacement() {

            char[] cc = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

            return cc;

        }

 

    }

大小写转换:

 editText.setTransformationMethod(new AllCapTransformationMethod());
  • 作者:現狀很好
  • 原文链接:https://blog.csdn.net/qq_40543575/article/details/102738843
    更新时间:2022-07-31 11:27:54