代码之家  ›  专栏  ›  技术社区  ›  Dark Drake

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

  •  2
  • Dark Drake  · 技术社区  · 7 年前

    我创建了一个 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 回复  |  直到 7 年前
        1
  •  5
  •   yashkal    7 年前

    只需更换 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();
    
        2
  •  0
  •   Shivam Oberoi    7 年前

    试试这个-:

    edittext.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);`
    

    而不是-:

    edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    
        3
  •  0
  •   Nikunj    7 年前

    您需要这样写:

    editText.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    
        4
  •  0
  •   Harshad Prajapati    7 年前

    尝试以下操作:-

    同时尝试这两件事

    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

        5
  •  0
  •   Jeffy Lazar    7 年前

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

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

        6
  •  0
  •   Tara    7 年前

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

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

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