Nie znalazłem odpowiedniego rozwiązania tego problemu. Przyjęte rozwiązanie dtmilano nie działa w pełni. Jeśli EditText jest skupiony w trybie poziomym, w którym masz klawiaturę pełnoekranową, cyfry nadal są wyświetlane w czystym tekście, a nie zamaskowane.
Spędziłem znaczny czas przeglądając rzeczywisty kod TextView, a powodem tego jest problem polegający na jawnym sprawdzeniu InputType na InputType.TYPE_CLASS_TEXT i, jeśli dobrze pamiętam, TYPE_MASK_CLASS. Jeśli więc zawarłeś jakiekolwiek inne InputType w tych granicach (myślę, że zakres używany przez TYPE_CLASS_TEXT i TYPE_MASK_CLASS jest pierwszym bajtem), to nie zostanie rozpoznany jako hasło, które wymaga maskowania.
Wiem, że to, co powiedziałem, jest dość mylące. Rzeczywisty kod jest dużo bardziej mylący. Byłem bardzo zbulwersowany kodeksem TextView, mówiąc szczerze. To splątany bałagan z wszędzie zakodowanymi próbami. Okropna praktyka kodowania, która prowadzi do takich problemów.
Ah, interesujące. Nie widziałem, żeby był przestarzały. Oto dokumentacja, która mówi o 'inputType' jest drogą do zrobienia (jak wspomina Roman): http://developer.android.com/reference/android/R.attr.html#password –
Jako mały dodatek, dla tych, którzy chcą zrobić rzeczy z kodu: editText.setInputType (InputType.TYPE_CLASS_PHONE); editText.setTransformationMethod (PasswordTransformationMethod.getInstance()); –
inputType = "numberPassword" jest prawdopodobnie najlepszą opcją, ale jest dostępna tylko wtedy, gdy min. SDK Twojej aplikacji jest> = 3.0 (Honeycomb) – k2col