Ответ 1
Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Это работает для меня.
Но вы должны взглянуть на комментарий Октавиана Дамиэна, он прав.
Мне нужно создать форму входа в систему с полями "имя пользователя" и "два раза" и "отменить" в приложении для Android.
Я использую диалог предупреждения с 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);
Это работает для меня.
Но вы должны взглянуть на комментарий Октавиана Дамиэна, он прав.
Это устарело
В xml EditText iclude этот атрибут: android: password = "true"
Edit
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" /
добавить андроид: inputType = "textPassword"
Вам нужно использовать PasswordTransformationMethod.getInstance()
вместо new PasswordTransformationMethod()
.
Единственный способ, который работал у меня с использованием кода (а не XML), - это следующий:
etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
Смотрите эту ссылку текстовый вид андроида: пароль
Это относится и к EditText
, так как это известный прямой подкласс 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>
Мой поиск аналогичного решения для Visual Studio 2015/Xamarin приведет меня к этой теме. При настройке EditText.InputType
на Android.Text.InputTypes.TextVariationVisiblePassword
правильно спрятал пароль во время ввода пользователя, он не "скрывал" пароль, если он был видимым до того, как была отображена макет EditText (до того, как пользователь отправил свою запись пароля). Чтобы скрыть видимый пароль после того, как пользователь отправит свой пароль, и будет выделен макет EditText, я использовал EditText.TransformationMethod = PasswordTransformationMethod.Instance
, как было предложено LuxuryMode.
Чтобы включить пароль в EditText, нам нужно будет установить атрибут "inputType" в xml файле. Если мы используем только 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"
Но если мы реализуем Password EditText с Material Design (с поддержкой библиотеки Design Design), тогда мы будем писать код, как показано ниже.
<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. Поэтому, если у нас есть таможенная обработка функции show/hide в пароле EditText, тогда нам нужно будет установить значение false в коде, как указано выше.
app:passwordToggleEnabled="true"
Чтобы добавить строку выше, нам нужно добавить строку ниже в корневом макете.
xmlns:app="http://schemas.android.com/apk/res-auto"