Android:如何在编辑文本中设置密码属性?

问题描述

| 我需要在Android应用程序中使用\'username \'\'password \'字段以及两个按钮\'login \'和\'cancel \'创建一个登录表单。 我正在使用其中带有edittext的警报对话框。 这是我用来创建密码edittext的代码
     final EditText Password = new EditText(this);
     Password.setGravity(Gravity.CENTER);
     Password.setHint(\"Password\");
     Password.setWidth(200);

     Password.setTransformationMethod(new PasswordTransformationMethod());
     login_alert.addView(Password);
我的问题是,当我打开软键盘来编辑密码时,将显示纯文本而不是\'\'。 (未在软键盘模式下显示为点) 谁能提出解决方案?     

解决方法

Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
这对我有用。 但是您必须查看Octavian Damiean的评论,他是对的。     ,不推荐使用 在EditText的xml中,包含以下属性:android:password = \“ true \” 编辑
android:inputType=\"textPassword\"
    ,这是在密码中加点的新方法
<EditText
    android:id=\"@+id/loginPassword\"
    android:layout_width=\"fill_parent\"
    android:layout_height=\"wrap_content\"
    android:inputType=\"textPassword\"
    android:hint=\"@string/pwprompt\" /
添加android:inputType = \“ textPassword \”     ,您需要使用
PasswordTransformationMethod.getInstance()
而不是
new PasswordTransformationMethod()
。     ,使用代码(不是XML)对我有用的唯一方法是:
etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
    ,看到这个链接 文字检视android:password 这也适用于
EditText
,因为它是
TextView
的已知直接子类。     ,我发现这样做是为了将重心设置为居中,并且在
using inputType
时仍显示密码提示,hint10ѭ必须在XML行的末尾。
<EditText android:textColor=\"#000000\" android:id=\"@+id/editText2\" 
    android:layout_width=\"fill_parent\" android:hint=\"Password\" 
    android:background=\"@drawable/rounded_corner\" 
    android:layout_height=\"fill_parent\" 
    android:nextFocusDown=\"@+id/imageButton1\" 
    android:nextFocusRight=\"@+id/imageButton1\" 
    android:nextFocusLeft=\"@+id/editText1\"
    android:nextFocusUp=\"@+id/editText1\" 
    android:inputType=\"textVisiblePassword\" 
    android:textColorHint=\"#999999\" 
    android:textSize=\"16dp\" 
    android:gravity=\"center\">
</EditText>
    ,要设置在EditText中启用的密码,我们将必须在xml文件中设置一个\“ inputType \”属性。如果仅使用EditText,则将在EditText中设置输入类型,如下面的代码所示。
                    <EditText
                    android:id=\"@+id/password_Edit\"
                    android:focusable=\"true\"
                    android:focusableInTouchMode=\"true\"
                    android:hint=\"password\"
                    android:imeOptions=\"actionNext\"
                    android:inputType=\"textPassword\"
                    android:maxLength=\"100\"
                    android:nextFocusDown=\"@+id/next\"
                    android:layout_width=\"match_parent\"
                    android:layout_height=\"match_parent\" />
密码启用属性为
 android:inputType=\"textPassword\"
但是,如果我们要使用Material Design(带有设计支持库)实现Password EditText,那么我们将按照下面的代码编写代码。
<android.support.design.widget.TextInputLayout
                xmlns:app=\"http://schemas.android.com/apk/res-auto\"
                android:id=\"@+id/txtInput_currentPassword\"
                android:layout_width=\"match_parent\"
                app:passwordToggleEnabled=\"false\"
                android:layout_height=\"wrap_content\">

                <EditText
                    android:id=\"@+id/password_Edit\"
                    android:focusable=\"true\"
                    android:focusableInTouchMode=\"true\"
                    android:hint=\"@string/hint_currentpassword\"
                    android:imeOptions=\"actionNext\"
                    android:inputType=\"textPassword\"
                    android:maxLength=\"100\"
                    android:nextFocusDown=\"@+id/next\"
                    android:layout_width=\"match_parent\"
                    android:layout_height=\"match_parent\" />
            </android.support.design.widget.TextInputLayout>
@注意:-在Android SDK 24及更高版本中,\“ passwordToggleEnabled \”默认为true。因此,如果我们在密码EditText中对show / hide功能进行了海关处理,则必须在上面的代码中将其设置为false。
app:passwordToggleEnabled=\"true\"
要添加以上行,我们必须在根目录布局中添加以下行。
xmlns:app=\"http://schemas.android.com/apk/res-auto\"
    ,我对Visual Studio 2015 / Xamarin的类似解决方案的搜索将我带到了这个话题。在将
EditText.InputType
设置为
Android.Text.InputTypes.TextVariationVisiblePassword
时,可以在用户输入期间正确隐藏密码,但是如果在呈现EditText布局之前(在用户提交密码输入之前)可以看到密码,则它不会“隐藏”密码。为了在用户提交密码并呈现EditText布局后隐藏可见的密码,我使用了LuxuryMode建议的ѭ19。