W mojej aplikacji mam EditText
domyślny typ danych wejściowych domyślnie ustawiony na android:inputType="textPassword"
deault. Ma CheckBox
po swojej prawej stronie, która po zaznaczeniu zmienia typ wprowadzania tego EditText na NORMAL PLAIN TEXT. Kod na to jest
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Mój problem polega na tym, że gdy ta opcja jest odznaczona, powinna ponownie ustawić typ danych wejściowych na HASŁO. Zrobiłem to za pomocą-
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
Ale tekst wewnątrz tego edytowanego tekstu jest nadal widoczny. I ku zaskoczeniu, kiedy zmieniam orientację, automatycznie ustawia typ wprowadzania na HASŁO, a tekst w środku jest wypunktowany (pokazany jak hasło).
Jest jakiś sposób na osiągnięcie tego?
android
passwords
android-edittext
Rajkiran
źródło
źródło
mailEdt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
. Pracuje dla mnie.Odpowiedzi:
Tylko dla ludzi, którzy mają ten sam problem. Po prostu dodaj dodatkowy atrybut do tego EditText programowo i gotowe.
W przypadku hasła numerycznego (pin).
Upewnij się również, że kursor znajduje się na końcu tekstu w EditText. Ponieważ po zmianie typu wprowadzania kursor zostanie automatycznie ustawiony na punkt początkowy. Proponuję więc użyć następującego kodu:
Korzystając z powiązania danych, możesz skorzystać z następującego kodu
Jeśli używasz Kotlin,
źródło
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
editText.getSelectionStart()
ieditText.getSelectionEnd()
przy pomocy,setSelection(start, end)
aby uniknąć tego problemu.użyj tego kodu, aby zmienić hasło na tekst i odwrotnie
pełny przykładowy kod znajduje się na stronie http://www.codeproject.com/Tips/518641/Show-hide-password-in-a-edit-text-view-password-ty
źródło
Powyższa metoda tak naprawdę nie działała dla mnie. Odpowiedź poniżej działa dla 2.2 SDK.
Ustawić inputType dla EditText?
źródło
Kolejny prosty przykład użycia ImageView do przełączania widoczności z mniejszym kodem, ponieważ z powodu pojedynczego przypisania InputType potrzebujemy tylko operatora równości:
Zastępowanie:
Z :
Daje ten sam wynik, ale krótsze słowo.
źródło
źródło
To działało dla mnie:
źródło
Ok Więc po godzinach prób w końcu go wdrożyłem. Poniżej znajduje się kod ..
Objaśnienia: - Mam przycisk z domyślnym tekstem jako show. Po zdarzeniu onclick na nim sprawdza, czy tekst przycisku jest wyświetlany. Jeśli jest pokazywany, to zmieniaj typ wprowadzania, dostosowując pozycję kursora i ustawiając nowy tekst jako ukryty w nim.
Gdy jest ukryty ... robi odwrotną czynność, tj. Ukrywa hasło, dostosowuje kursor i ustawia tekst jako pokaz. I to wszystko. Działa jak urok.
źródło
Dla użytkowników kotlin:
źródło
Użyj tego kodu, aby zmienić hasło na tekst i odwrotnie. Ten kod doskonale dla mnie działał. Spróbuj tego..
źródło
Jest to pełna procedura obsługi OnClick dla obrazu / przycisku do pokazywania / ukrywania hasła.
źródło
edtPassword.getSelectionStart()
.Dodano funkcję przełączania widoczności hasła w celu obsługi biblioteki w wersji 24.2.0, która umożliwia przełączanie hasła od razu
EditText
bez potrzebyCheckBox
.Możesz sprawić, by działało to w zasadzie, najpierw aktualizując wersję biblioteki pomocy technicznej do 24.2.0, a następnie ustawiając
inputType
hasło wTextInputEditText
. Oto jak to zrobić:Możesz uzyskać więcej informacji o nowej funkcji w dokumentacji dla programistów TextInputLayout .
źródło
Od czasu biblioteki wsparcia v24.2.0. możesz to osiągnąć bardzo łatwo
Musisz tylko:
Dodaj bibliotekę projektów do swoich zależności
Używaj
TextInputEditText
w połączeniu zTextInputLayout
passwordToggleEnabled
Atrybut spowoduje zmianę hasłaW swoim układzie głównym nie zapomnij dodać
xmlns:app="http://schemas.android.com/apk/res-auto"
Możesz dostosować przełączanie hasła, używając:
app:passwordToggleDrawable
- Możliwość rysowania w celu użycia jako ikony przełączania widoczności hasła.app:passwordToggleTint
- Ikona używana do przełączania widoczności hasła.app:passwordToggleTintMode
- Tryb mieszania stosowany do nakładania odcienia tła.Więcej szczegółów w dokumentacji TextInputLayout .
źródło
Moje poszukiwania podobnego rozwiązania dla Visual Studio / Xamarin doprowadziły mnie do tego wątku. Poniżej znajduje się to, co działało dla mnie z Xamarin. Pamiętaj, że ta implementacja zachowuje
TYPE_TEXT_FLAG_NO_SUGGESTIONS
flagę podczas przełączania trybów.EditText et = FindViewById<EditText>(Resource.Id.ET);
Aby pokazać postacie:
et.InputType = Android.Text.InputTypes.TextVariationVisiblePassword | Android.Text.InputTypes.TextFlagNoSuggestions;
Aby ukryć postacie:
et.InputType = Android.Text.InputTypes.TextVariationPassword | Android.Text.InputTypes.ClassText;
Aby ustawić pozycję do końca:
int position = et.Text.Length;
et.SetSelection(position, position);
źródło
if (edittext.getInputType() == (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD )){ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD ); }else{ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ); }
dla Visual Studio / Xamarin ..?niektóre dynamiczne sytuacje
holder.edit_pin.setInputType(InputType.TYPE_CLASS_NUMBER);
nie będą działać, więc lepiej użyj obu takichUwaga: jest to odpowiednie, gdy używasz dynamicznych kontrolek, takich jak arrayaapter
źródło
Po wpisaniu
setInputType
hasła pojawi się problem z FONTOto moje rozwiązanie dla pokaż / ukryj hasło bez problemu z czcionkami
Uwaga: używam
InputType.TYPE_TEXT_VARIATION_PASSWORD
zamiastInputType.TYPE_CLASS_TEXT
lubHideReturnsTransformationMethod
ponieważ chcę, aby klawiatura wyświetlała zarówno tekst, jak i cyfręPRÓBNY
źródło
Chciałbym usunąć
android:inputType="textPassword"
z twojego układu. Właśnie dlatego zmienia orientację na hasło, gdy zmienia się orientacja. Ponieważ za każdym razem, gdy zmienia się orientacja, widok jest odtwarzany.Jeśli chodzi o pierwszy problem, spróbuj:
w zasadzie opróżnianie tekstu przed zmianą typu wprowadzania, a następnie dodawanie go z powrotem.
źródło
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
natychmiast po inicjalizacji, ale niestety!Uzupełnij kod, jeśli chcesz zastosować widoczność hasła w tekście edycji hasła.
Utwórz uchwyt [Dowolny rysunek lub pole wyboru]
po kliknięciu lub zaznaczeniu / Odznacz napisz:
Nie zapomnij napisać tej linii:
Resetuje kursor do końca linii.
źródło
Zmieniam typ danych wejściowych na moim polu wyboru, więc
OnCheckedChangeListener
robię:I w końcu zadziałało.
Wygląda na problem boolowski
TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
. Odwróć flagę i powinno to rozwiązać problem.W Twoim przypadku:
źródło
Użyj metody transformacji:
Ukryć:
Do widocznego:
Otóż to.
źródło
Tylko dodatkowy komentarz do poprawnej odpowiedzi udzielonej przez @Rajkiran, możesz chcieć dodać
do stanu wejściowego NORMAL, aby użytkownicy nie drażnili się autosugestią klawiatury
źródło
final int [] count = {0};
źródło
Na podstawie odpowiedzi neeraj t i Evertona Fernandesa Rosario napisałem w Kotlinie, gdzie
password
jest identyfikator EditText w twoim układzie.źródło