在隐藏密码字符之前显示密码字符

时间:2016-08-04 13:02:19

标签: android android-edittext transformation

在我的应用程序中,我实现了自己的数字键盘,用于输入(基于数字的)密码。密码'或者更确切地说是' - ' - 表示,显示在num-pad上方4个框中实现的4个EditTexts上。当你输入一个数字时,其中一个框将填入一个圆点 - 为此我使用了TransformationMethod PasswordTransformationMethod - 但我希望你打入的数字在被隐藏之前可以看到一段时间(比如〜200毫秒)。

在Android中是否有任何实现这方面的功能,或者您如何以最佳方式实现此功能?我确定你知道我的意思,它经常用于基于移动设备的密码输入。

编辑:提示后的代码:

codeField1 = (EditText) findViewById(R.id.passcode_1);
codeField2 = (EditText) findViewById(R.id.passcode_2);
codeField3 = (EditText) findViewById(R.id.passcode_3);
codeField4 = (EditText) findViewById(R.id.passcode_4);

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            codeField1.setTransformationMethod(PasswordTransformationMethod.getInstance());
            codeField2.setTransformationMethod(PasswordTransformationMethod.getInstance());
            codeField3.setTransformationMethod(PasswordTransformationMethod.getInstance());
            codeField4.setTransformationMethod(PasswordTransformationMethod.getInstance());
       }
    }, 2000);

仍然给我问题,只影响我输入的第一个..(所有这些都在onCreate())。

2 个答案:

答案 0 :(得分:2)

使用TextWatcher

不要在edittext中设置android:password="true"属性。请使用 textwatcher 并在textwatcher addTextChangedListener()中替换密码*等待200ms后

要等待使用以下代码:

private Handler mHandler = new Handler();
 mHandler.postDelayed(new Runnable() {
            public void run() {
                doStuff();
            }
        }, 2000);

答案 1 :(得分:2)

试试这段代码..

这将在2秒后隐藏文本,您可以根据您的需要进行更改..

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
        }
    }, 2000);  // set time based on your requirement