5

setInputType()并且setTransformationMethod()在我以编程方式在android中创建密码EditText时不起作用...

我的代码:

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

这不工作...

4

6 回答 6

2

您没有在视图中添加编辑文本,所以它可能无法正常工作......这段代码对我来说很好

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);
于 2013-11-14T09:52:41.503 回答
0

试试这个代码:

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

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

于 2013-11-14T09:28:52.117 回答
0

onCreate()在创建edittext的方法中添加以下行

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); 
        }
    }
};
于 2013-11-14T09:54:15.903 回答
0

根据 TextView 文档, android:password 的编程版本是setTransformationMethod(). 所以像:

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

如果它不起作用试试这个

Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
于 2013-11-14T09:38:18.350 回答
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函数在某个间隔之后或在间隔完成之前输入下一个字符之后将输入值转换为(点)。

于 2013-11-14T09:34:51.220 回答
0

利用

EditText edtPassword = new EditText(getApplicationContext());
edtPassword.setLayoutParams(rowParams);
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(new PasswordTransformationMethod());
于 2013-11-14T09:35:47.210 回答