以编程方式创建EditText的输入类型密码不起作用

时间:2017-12-15 06:35:02

标签: java android alertdialog

我已在EditText中以编程方式创建了AlertDialog,但无法将其输入类型更改为密码。以下是我的代码,

AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText edittext = new EditText(ChildMainScreen.this);
edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
edittext.setSingleLine(true);
alert.setMessage("Please enter password to continue");
alert.setView(edittext);
alert.show();

我也试过了,

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());

但没有运气。

Android版本是7(牛轧糖)

6 个答案:

答案 0 :(得分:1)

只需将edittext.setSingleLine(true);替换为edittext.setMaxLines(1);

即可
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText edittext = new EditText(ChildMainScreen.this);
edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
edittext.setMaxLines(1);
alert.setMessage("Please enter password to continue");
alert.setView(edittext);
alert.show();

答案 1 :(得分:0)

试试这个 - :

edittext.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);`

而不是 - :

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

答案 2 :(得分:0)

你需要写下这个:

editText.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

答案 3 :(得分:0)

试试这个: -

同时尝试两件事

AlertDialog.Builder alert = new AlertDialog.Builder(this);
        final EditText edittext = new EditText(ChildMainScreen.this);
        edittext.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
        edittext.setSingleLine(true);
        edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
        alert.setMessage("Please enter password to continue");
        alert.setView(edittext);
        alert.show();

<强>输出:

enter image description here

答案 4 :(得分:0)

您可以尝试以下方法获取密码作为输入

AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
    final EditText edittext = new EditText(getActivity());
    edittext.setRawInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
    edittext.setSingleLine(true);
    edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
    alert.setMessage("Please enter password to continue");
    alert.setView(edittext);
    alert.show();

根据文档

TYPE_TEXT_VARIATION_VISIBLE_PASSWORD正在输入密码,应该是  *对用户可见。

TYPE_TEXT_VARIATION_PASSWORD正在输入密码。

答案 5 :(得分:0)

首先在清单

中添加此内容
<activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustPan|stateAlwaysHidden" />

AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText edittext = new EditText(ChildMainScreen.this);
edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
edittext.setSingleLine(true);
edittext.setMaxLines(1);
alert.setMessage("Please enter password to continue");
alert.setView(edittext);
alert.show();

然后检查它是否为您提供所需的行为