【问题标题】:How to set AppCompatEditText as inputType textPassword programmatically如何以编程方式将 AppCompatEditText 设置为 inputType textPassword
【发布时间】:2018-08-16 19:23:32
【问题描述】:

如何以编程方式将AppCompatEditText 设置为inputType textPassword

我已经尝试了所有可能的方法来解决这个问题:

pass_et = (AppCompatEditText) loginView.findViewById(R.id.pass_et);
     pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            pass_et.setSelection(pass_et.getText().length());
            pass_et.setTransformationMethod(PasswordTransformationMethod.getInstance());
            pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

    pass_et.setTypeface(Typeface.DEFAULT);
            pass_et.setTransformationMethod(new PasswordTransformationMethod());

     pass_et.setTypeface(Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/Lato-Italic.ttf"));       pass_et.setTransformationMethod(new PasswordTransformationMethod());

    pass_et.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                     pass_et.setTypeface(Typeface.DEFAULT);
            pass_et.setTransformationMethod(new PasswordTransformationMethod());
                    pass_et.setInputType(

                            InputType.TYPE_TEXT_VARIATION_PASSWORD);

                    pass_et.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }
            });

我也试过了:

pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

【问题讨论】:

  • 这可能会有所帮助stackoverflow.com/questions/3685790/…
  • pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());我尝试了所有但没有用,如果我在 xml 文件中添加 textPassword 它正在工作但字体正在改变,它与我在应用程序中应用的字体不同
  • 您可以使用edit 按钮更改您的问题以包含额外信息。
  • 你的问题放错了。设置输入类型有效,但您丢失了字体,对吗?相应地编辑您的问题。

标签: android


【解决方案1】:

不要打电话给setTransfromationMethod(PasswordTransformationMethod.getInstance()),这是setInputType 的一部分。 Ctrl+单击方法名查看源代码。

当您将输入类型设置为密码时,字体会自动设置为等宽字体。所以,设置字体之后 setInputType.

既然你已经需要在一切设置好之后调用setTypeface,你不妨使用XML 属性。然后在代码中设置字体。

【讨论】:

    【解决方案2】:

    我通过这个解决了我的问题:

    doOnTextChanged { text, start, count, after ->
                inputType = EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_PASSWORD
                setSelection(text?.length ?: 0)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多