Android: Как установить свойство пароля в редактируемом тексте? - PullRequest
45 голосов
/ 23 мая 2011

Мне нужно создать форму входа в систему с полями 'username' 'password' и двумя кнопками 'login' и 'cancel' в моем приложении для Android.

Я использую диалоговое окно с текстом редактирования внутри него.

Это код, который я использовал для создания пароля 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);

Моя проблема в том, что вместо «точек» отображается простой текст, когда я открываю программную клавиатуру для редактирования пароля. (Отображается в виде точек, когда не в режиме программной клавиши)

Может кто-нибудь предложить решение?

Ответы [ 9 ]

92 голосов
/ 23 мая 2011
Password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

Этот работает для меня.
Но вы должны посмотреть на комментарий Октавиана Дамиана, он прав.

25 голосов
/ 23 мая 2011

Это устарело

В XML-файле EditText включите этот атрибут: android: пароль = "true"

Редактировать

android:inputType="textPassword"
11 голосов
/ 17 февраля 2015

Вот новый способ ввода точек в пароле

<EditText
    android:id="@+id/loginPassword"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:hint="@string/pwprompt" /

add android: inputType = "textPassword"

6 голосов
/ 10 июля 2012

Вам нужно использовать PasswordTransformationMethod.getInstance() вместо new PasswordTransformationMethod().

4 голосов
/ 04 ноября 2015

Единственный способ, который работал для меня с использованием кода (не XML), это:

etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
3 голосов
/ 30 сентября 2011

При этом я обнаружил, что для того, чтобы установить гравитацию в центр, и, тем не менее, подсказка пароля отображается, когда 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>
3 голосов
/ 23 мая 2011

Смотрите эту ссылку просмотр текста android: пароль

Это относится и к EditText, так как это известный прямой подкласс TextView.

1 голос
/ 05 июля 2017

Чтобы установить пароль, включенный в 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"

Но если мы реализуем Text Edit Password с Material 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.Так что, если у нас есть таможенная обработка функции показа / скрытия в пароле EditText, тогда мы должны будем установить ее в коде, как указано выше в.

app:passwordToggleEnabled="true"

Чтобы добавить строку выше, нам нужно будет добавитьпод строкой в ​​корневом макете.

xmlns:app="http://schemas.android.com/apk/res-auto"
1 голос
/ 17 сентября 2016

Мой поиск аналогичного решения для Visual Studio 2015 / Xamarin привел меня к этой теме. При установке EditText.InputType на Android.Text.InputTypes.TextVariationVisiblePassword, правильно скрывавшем пароль при вводе пользователя, он не «скрывал» пароль, если он был виден до отображения макета EditText (до того, как пользователь представил свою запись пароля). Чтобы скрыть видимый пароль после того, как пользователь отправит свой пароль и отредактирован макет EditText, я использовал EditText.TransformationMethod = PasswordTransformationMethod.Instance, как это предлагается LuxuryMode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...