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"