Android: программное создание окна настроек 2
В предыдущей статье я описал как можно программно создать окно с настроками. Сегодня разобрался как можно было создать поле ввода пароля проще, без использования методов трансформации текста. Для этоно надо использовать метод setInputType
у объекта TextView
:
passPref.getEditText().setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD);
Первая константа TYPE_CLASS_TEXT
означает что поле будет использоваться для ввода текста, вторая TYPE_TEXT_VARIATION_PASSWORD
- что текст будет паролем и его надо маскировать.
Поле ввода с типом TYPE_TEXT_VARIATION_PASSWORD
по умолчанию не использует словари для посказок при вводе текста:
а вот при использовании предыдущего способа
passPref.getEditText().setTransformationMethod(PasswordTransformationMethod.getInstance());
)
такой баг был:
"Вручную" подсказки при вводе можно убрать выключив флаг TYPE_TEXT_FLAG_AUTO_COMPLETE
из типов следующим образом:
usernamePref.getEditText().setInputType(android.text.InputType.TYPE_CLASS_TEXT ^ android.text.InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
Получится следующее:
В итоге код для создания страницы настроек принял следующий вид:
package net.galanov.android.preferencesdemo; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; public class Preferences extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setPreferenceScreen(createPreferenceHierarchy()); } private PreferenceScreen createPreferenceHierarchy() { // создаём корневой элемент для параметров - страницу preferences PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); // создаём диалог для ввода логина EditTextPreference usernamePref = new EditTextPreference(this); // устанавливаем заголовок для диалогового окна (Username) usernamePref.setDialogTitle(R.string.pref_username_dialog_title); // устанавливаем ключ для этого параметра, по нему потом пожно будет получить значение параметра usernamePref.setKey("username"); // устанавливаем заголовк для элемента страницы usernamePref.setTitle(R.string.pref_username_title); // устаналиваем подпись для элемента страницы usernamePref.setSummary(R.string.pref_username_summary); // отключаем автозавершение usernamePref.getEditText().setInputType(android.text.InputType.TYPE_CLASS_TEXT ^ android.text.InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE); // добавляем элемент на страницу root.addPreference(usernamePref); // аналогично добавляем элемент для воода пароля EditTextPreference passPref = new EditTextPreference(this); passPref.setDialogTitle(R.string.pref_password_dialog_title); passPref.setKey("password"); passPref.setTitle(R.string.pref_password_title); passPref.setSummary(R.string.pref_password_summary); // более правильный вариант - устанавливаем тип ввода - пароль с невидимыми символами passPref.getEditText().setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD); // добавлеяем элемент на страницу root.addPreference(passPref); // возвращаем ссылку на созданную страницу return root; } }
Прикрепленные файлы | Размер |
---|---|
Инсталятор | 14.68 кб |
Исходный код примера | 46.91 кб |
- Метки:
Комментарии
Отправить комментарий