有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java以编程方式创建的EditText的输入类型密码无效

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

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) 个答案

  1. # 1 楼答案

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

    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正在输入密码

  2. # 2 楼答案

    试试这个-:

    edittext.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);`
    

    而不是-:

    edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    
  3. # 3 楼答案

    你需要这样写:

    editText.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    
  4. # 4 楼答案

    首先将其添加到您的清单中

    <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();
    

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

  5. # 5 楼答案

    试试这个:-

    同时尝试两件事

    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

  6. # 6 楼答案

    只需将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();