【问题标题】:Set visibility of password in edittext在edittext中设置密码的可见性
【发布时间】:2012-10-29 10:32:17
【问题描述】:

当 inputType 为文本时,此代码是正确的,但我希望密码类型编号相同。单击复选框时,我希望密码可见。

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                } else {
                    password.setInputType(129);
                }
            }
        });

【问题讨论】:

  • 试试这个 android:inputType="textPassword"
  • 当我想将字段重置为隐藏文本时,setInputType() 对我不起作用 - 但 passwordEditView.setTransformationMethod(..) 确实如此 - 来自这篇文章:@987654321 @

标签: android


【解决方案1】:

你可以使用:

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    password.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
                } else {
                    password.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL);
                }
            }
        });

【讨论】:

  • 我试过这样 :getEditText().setInputType( InputType.TYPE_CLASS_NUMBER | (((CheckBox) view).isChecked() ? InputType.TYPE_TEXT_VARIATION_PASSWORD: InputType.TYPE_NUMBER_VARIATION_NORMAL));但它没有用。
  • @user1744952 将其更改为:getEditText().setInputType( InputType.TYPE_CLASS_NUMBER | (((CheckBox) view).isChecked() ? InputType.TYPE_NUMBER_VARIATION_PASSWORD: InputType.TYPE_NUMBER_VARIATION_NORMAL));
  • @user1744952 我想你正在使用 | (或)在您的 setinputType 中,这就是为什么它可能将第一个选项作为您的编辑文本的输入类型
【解决方案2】:

已添加密码可见性切换功能以支持库版本 24.2.0,使您无需复选框即可直接从 EditText 切换密码。

您可以通过首先将您的支持库版本更新为 24.2.0,然后在 TextInputEditText 上设置 numberPassword 的 inputType 来完成这项工作。这适用于输入类型 textPasswordnumberPasswordtextWebPassword

这是如何做到这一点的:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:inputType="numberPassword"/>
</android.support.design.widget.TextInputLayout>

您可以在TextInputLayout 的开发者文档中获得有关新功能的更多信息。

【讨论】:

    【解决方案3】:

    对于数字使用:

    checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    password.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
                } else {
                    password.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);
                }
            }
        });
    

    【讨论】:

    • 不,它没有用我试过这样: getEditText().setInputType( InputType.TYPE_CLASS_NUMBER | (((CheckBox) view).isChecked() ? InputType.TYPE_TEXT_VARIATION_PASSWORD: 但它没有用。 InputType.TYPE_NUMBER_FLAG_SIGNED));
    猜你喜欢
    • 2015-08-27
    • 2017-10-31
    • 2016-02-19
    • 2015-12-17
    • 2017-05-11
    • 2021-12-22
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    相关资源
    最近更新 更多