Android:如何在编辑文本中设置密码属性?
我需要创build一个login表单与'用户名''密码'字段和两个button'login'和'取消'在我的Android应用程序。
我正在使用一个警告对话框里面的edittext。
这是我用来创build密码编辑文本的代码
final EditText Password = new EditText(this); Password.setGravity(Gravity.CENTER); Password.setHint("Password"); Password.setWidth(200); Password.setTransformationMethod(new PasswordTransformationMethod()); login_alert.addView(Password);
我的问题是,当我打开一个softkeypad编辑密码时,纯文本显示,而不是“点”。 (不在softkeypad模式下显示为点)
任何人都可以提出解决scheme
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:密码
这也适用于EditText
,因为它是TextView
的已知直接子TextView
。
我发现这样做时,为了将引力设置为居中,并且在using inputType
时仍然显示密码提示,则android:gravity="Center"
必须位于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>
我寻找一个类似的解决scheme的Visual Studio 2015 / Xamarin引导我到这个线程。 虽然将EditText.InputType
设置为Android.Text.InputTypes.TextVariationVisiblePassword
在用户input时正确隐藏密码,但是如果在EditText Layout呈现之前(在用户提交密码input之前)可见,密码不会“隐藏”密码。 为了在用户提交密码并呈现EditText布局后隐藏可见的密码,我使用了LuxuryModebuild议的EditText.TransformationMethod = PasswordTransformationMethod.Instance
。
要在EditText中设置启用的密码,我们必须在xml文件中设置一个“inputType”属性。如果我们只使用EditText,那么我们将在EditText中设置inputtypes,如下面的代码所示。
<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"
但是,如果我们正在使用材料devise(使用devise支持库)来实现密码编辑文本,那么我们将编写如下代码。
<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中有海关处理显示/隐藏function,那么我们将不得不在上面给出的代码中将它设置为false。
app:passwordToggleEnabled="true"
要添加上面的行,我们将不得不在根布局中添加下面的行。
xmlns:app="http://schemas.android.com/apk/res-auto"