我无法以编程方式创建密码edittext?

时间:2013-11-14 09:26:41

标签: android

我在android中以编程方式创建Password EditText时,

setInputType()setTransformationMethod()无效...

我的代码:

EditText edtPassword = new EditText(getApplicationContext());
edtPassword.setLayoutParams(rowParams);
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());

这不起作用......

6 个答案:

答案 0 :(得分:1)

你还没有在视图中添加edittext,所以它可能无法正常工作...... 这段代码对我来说很好

LinearLayout mLinearLayout = new LinearLayout(this);
        mLinearLayout = (LinearLayout)findViewById(R.id.mylinearlayout);


            EditText lEditText = new EditText(this);
            lEditText .setLayoutParams(new           LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
                                                 LayoutParams.WRAP_CONTENT));
             lEditText.setText("Text Here");
             mLinearLayout.addView(lEditText);
             lEditText.setWidth(50);     // change width
             lEditText.setHeight(20); 

             lEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);

答案 1 :(得分:0)

试试这段代码:

password.setInputType(InputType.TYPE_CLASS_TEXT | inputType.TYPE_TEXT_VARIATION_PASSWORD);

不设置转换。或者,如果setinput方法不起作用,请使用setTransformation,但不能同时使用setTransformation。

答案 2 :(得分:0)

更改

edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT);

editPassword.setInputType(InputType.TYPE_CLASS_TEXT | inputType.TYPE_TEXT_VARIATION_PASSWORD);

对于密码样式实现,对于editText,代码为

editPassword.setTransformationMethod
(new android.text.method.PasswordTransformationMethod().getInstance());

setTransformationMethod函数在一段时间之后或在间隔完成之前输入下一个字符后将输入值转换为(点)。

答案 3 :(得分:0)

使用

EditText edtPassword = new EditText(getApplicationContext());
edtPassword.setLayoutParams(rowParams);
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(new PasswordTransformationMethod());

答案 4 :(得分:0)

根据TextView文档,android:password的编程版本为setTransformationMethod()。如下所示:

mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());应该做的工作。

如果不起作用,请尝试此

Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

答案 5 :(得分:0)

在您创建edittext

onCreate()方法中添加以下行
edtPassword.setTransformationMethod(new MyPasswordTransformationMethod());

之后在同一活动中创建PasswordTransformationMethod类:

public class MyPasswordTransformationMethod 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); 
        }
    }
};