Czy istnieje sprytny sposób, aby umożliwić użytkownikowi przełączanie się między ukrywaniem a wyświetlaniem hasła w Androidzie EditText? Wiele aplikacji na komputery PC pozwala na to.
176
Możesz dynamicznie zmieniać atrybuty TextView. Jeśli ustawisz atrybut XML na wartość android:password
true, widok pokaże kropki, jeśli ustawisz ją na fałsz, zostanie wyświetlony tekst.
Za pomocą metody setTransformationMethod powinieneś być w stanie zmienić te atrybuty z kodu. (Zastrzeżenie: nie testowałem, czy metoda nadal działa po wyświetleniu widoku. Jeśli napotkasz z tym problemy, zostaw mi komentarz, abym wiedział).
Pełny przykładowy kod to
yourTextView.setTransformationMethod(new PasswordTransformationMethod());
aby ukryć hasło. Aby pokazać hasło, możesz ustawić jedną z istniejących metod transformacji lub zaimplementować pustą TransformationMethod , która nic nie robi z tekstem wejściowym.
yourTextView.setTransformationMethod(new DoNothingTransformation());
setTransformationMethod(null)
.Jest to naprawdę łatwe do osiągnięcia, ponieważ Biblioteka wsparcia w wersji 24.2.0.
Wystarczy, że:
Dodaj bibliotekę projektów do swoich podopiecznych
Używaj
TextInputEditText
w połączeniu zTextInputLayout
passwordToggleEnabled
Atrybut będzie wykonać zadanie!W swoim układzie głównym nie zapomnij dodać
xmlns:app="http://schemas.android.com/apk/res-auto"
Możesz dostosować przełącznik hasła, używając:
app:passwordToggleDrawable
- Możliwość rysowania jako ikona przełączania widoczności wprowadzania hasła.app:passwordToggleTint
- Ikona używana do przełączania widoczności wprowadzania hasła.app:passwordToggleTintMode
- Tryb mieszania używany do nakładania odcienia tła.Więcej szczegółów w dokumentacji TextInputLayout .
W przypadku systemu AndroidX
wymienić
android.support.design.widget.TextInputLayout
zcom.google.android.material.textfield.TextInputLayout
wymienić
android.support.design.widget.TextInputEditText
zcom.google.android.material.textfield.TextInputEditText
źródło
android:text
włączonym atrybutemTextInputEditText
. Zawsze możesz zgłosić problem w narzędziu Google Issues Tracker dla Androidaapp:passwordToggleDrawable
(przestarzały) lubapp:endIconDrawable
użyć niestandardowego narzędzia do rysowania, tak jak<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_eye_close" android:state_checked="true"/> <item android:drawable="@drawable/ic_eye_open"/> </selector>
myślę, że Google powinien naprawić to zachowanie. Dobra dyskusjaAby wyświetlić kropki zamiast hasła, ustaw PasswordTransformationMethod:
oczywiście możesz ustawić to domyślnie w swoim elemencie edittext w układzie xml za pomocą
Aby ponownie pokazać czytelne hasło, po prostu podaj null jako metodę transformacji:
źródło
android:password
jest teraz przestarzała i powinieneśandroid:inputType
zamiast tego użyć .editText.getSelectionStart()
ieditText.getSelectionEnd()
do zapisywania pozycji kursora ieditText.setSelection(start, end)
przywracania jej.Pokazywać:
Ukryć:
Po każdym z nich kursor jest resetowany, więc:
źródło
Możesz użyć
app:passwordToggleEnabled="true"
oto przykład podany poniżej
źródło
app:endIconMode="password_toggle"
.Użyj pola wyboru i odpowiednio zmień typ wejścia.
źródło
...
...
źródło
To dla mnie praca, to zdecydowanie ci pomoże
źródło
Czuję, że chcę odpowiedzieć na to pytanie, nawet tam jest kilka dobrych odpowiedzi,
zgodnie z dokumentacją TransformationMethod wypełnij naszą misję
Zauważ, że używam noża do masła, ale jest to to samo, jeśli użytkownik sprawdza hasło pokaż
źródło
Jestem w stanie dodać kod ShowPassword / HidePassword z zaledwie kilkoma wierszami, samodzielny w bloku:
źródło
Miałem ten sam problem i jest bardzo łatwy do wdrożenia.
Wszystko, co musisz zrobić, to umieścić pole EditText w (com.google.android.material.textfield.TextInputLayout) i dodać do niego (app: passwordToggleEnabled = "true").
Spowoduje to wyświetlenie oka w polu EditText, a po kliknięciu hasło pojawi się i zniknie po ponownym kliknięciu.
źródło
źródło
W bardzo prostej formie:
Mam nadzieję, że to pomoże.
źródło
Możesz POKAZAĆ / UKRYĆ hasło za pomocą poniższego kodu:
KOD XML:
KOD JAVA:
źródło
Spróbuj tego:
Najpierw zdefiniuj flagę jako globalną w następujący sposób:
I ustaw słuchacza, aby obsługiwał dotknięcie przycisku pokaż i ukryj hasło:
źródło
Wypróbuj projekt https://github.com/maksim88/PasswordEditText na github. Nie musisz nawet zmieniać kodu Java za jego pomocą. Po prostu zmień
Edytować tekst
tag do
com.maksim88.passwordedittext.PasswordEditText
w pliku XML.
źródło
pokaż i ukryj hasło Edit_Text z polem wyboru
XML
kod java
źródło
Czy próbowałeś z setTransformationMethod? Jest dziedziczony z TextView i wymaga TransformationMethod jako parametru.
Możesz znaleźć więcej informacji o TransformationMethods tutaj .
Ma również kilka fajnych funkcji, takich jak zastępowanie postaci.
źródło
To, co zrobiłem, to
Możesz obejrzeć ten film, aby uzyskać bardziej szczegółowe kroki i wyjaśnienia https://youtu.be/md3eVaRzdIM
Mam nadzieję, że to pomoże :)
źródło
Oto moje rozwiązanie bez użycia metody TextInputEditText i Transformation.
XML
Kod Java
źródło
Według tego źródła , jeśli migrowałeś swój projekt do AndroidX, możesz zastąpić
compile "com.android.support:design:24.2.0"
z
implementation "com.google.android.material:material:1.0.0"
Następnie wszystko, co musisz zrobić, to umieścić poniższy kod w pliku układu:
Więcej informacji o materiałach
TextInputLayout
można znaleźć tutaj .Do tego źródła zaleca się migrację do AndroidX z biblioteki obsługi Androida:
źródło
Na początku jest to ekran załadowany z widocznością zasobów wektorowych obrazu
po kliknięciu zmieni się na tę widoczność obrazu
kod powyższego przełącznika hasła (kod xml)
Kod Java do obsługi przycisków
źródło
W XML rób tak
źródło
Moje rozszerzenie Kotlin. napisz raz używaj wszędzie
Możesz zachować tę metodę w dowolnym pliku i używać jej wszędzie
gdzie kliknięto ivShowPassword imageview (eye), a etPassword to Editext
źródło
Dobre rozwiązanie. Skonfiguruj przycisk, a następnie użyj tego kodu:
źródło
Dodaj tę metodę:
Wywołanie go spowoduje przełączenie między stanem typu wejścia (możesz zmienić transformację jednowierszową na ulubioną). Przykład użycia:
źródło
źródło
źródło
źródło