输入密码或金额的显示和隐藏(续)

昨天写完输入密码或金额的显示和隐藏,发现金额的显示目前一般用星(*)号代替。于是就想看看用星号的方法。由于没写过,从网上看了一下。切换星号主要就是要写一个类。

下面看一下效果图

可以看到效果图与上一篇文章相似,只是原点改成了*号。

问题的核心就是怎么改星号的。还是两行代码的问题。

  • 隐藏密码/金额

    1
    2

    mPassword.setTransformationMethod(new WordReplaceUtil());//设置显示为*号
  • 显示密码/金额

    1
    2

    mPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//显示密码/金额
  • 显示为星号的代码如下(这里声明一下,这个方法是在网上看的)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    public class WordReplaceUtil extends ReplacementTransformationMethod {
    String strWord = null;
    @Override
    protected char[] getOriginal() {
    //循环ASCII值 字符串形式累加到String
    for (char i = 0; i < 256; i++) {
    strWord += String.valueOf(i);
    }
    //strWord转换为字符形式的数组
    char[] charOriginal = strWord.toCharArray();
    return charOriginal;
    }

    @Override
    protected char[] getReplacement() {
    char[] charReplacement = new char[255];
    //输入的字符在ASCII范围内,将其转换为*
    for (int i = 0; i < 255; i++) {
    charReplacement[i] = '*';
    }

    return charReplacement;
    }
    }

遇到问题:

  • 不过这里有个问题,就是圆点的时候,当我清空内容后,将输入内容默认设置为隐藏。改为星号后,发现如果再这样设置,在显示的时候就无法清空。如果只用在显示金额等不用改变的地方还是没问题的。这里就把默认设置为隐藏给去掉了。如果有哪位大神解决了,还请告知一下解决方法。共同学习~~~:)

    Demo下载