如何更改密码字段以显示星号而不是点

时间:2011-05-25 13:39:00

标签: android

我正在处理需要密码字段(即编辑文本)的任务,以使用星号(*)而非点(。)隐藏用户输入。目前它显示为点。 如果可能使用android的本机方法,请告诉我如何做到这一点。或者,如果有人已经这样做,请发布代码。

提前致谢..

3 个答案:

答案 0 :(得分:6)

很晚才回答,我确定你不再关心,但其他人可能会这样。

初始化EditText字段。

 EditText UPL =(EditText) findViewById(R.id.UserPasswordToLogin) ;
    UPL.setTransformationMethod(new AsteriskPasswordTransformationMethod());

然后创建一个新的java类,名为AsteriskPasswordTransformationMethod.java,扩展 PasswordTransformationMethod

这是代码:

import android.text.method.PasswordTransformationMethod;
import android.view.View;

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
        }
        public char charAt(int index) {
            return '*'; // This is the important part
        }
        public int length() {
            return mSource.length(); // Return default
        }
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }
    }
};

答案 1 :(得分:2)

public final void setTransformationMethod (TransformationMethod method)

Since: API Level 1
Sets the transformation that is applied to the text that this TextView is displaying.
Related XML Attributes

android:password
android:singleLine

允许您更改任何字符

答案 2 :(得分:1)

我想你可以覆盖监听器类方法来修改要显示的文本,使其显示为“ * ”,但将实际字符串保留在背景中某处。因此,每次用户输入一个字母时,都会将其添加到累积的“密码”字符串中,而是用*

替换显示的字符串中的该字符。