2012-06-15 6 views
12

Mam kilka pól EditText w aplikacji na Androida i użyłem androida: cyfry do zatrzymania wprowadzania nieprawidłowych znaków.Używanie atrybutu Android: Digits do ograniczania znaków zatrzymuje działanie Następny przycisk działa

np android:digits="@string/validchars" (gdzie „validchars” jest zasobem ciąg wszystkich prawidłowych znaków - np AZ, 0-9, a niektóre interpunkcyjnych)

Problem jest, gdy użytkownik wciśnie klawisza ENTER na miękkiej klawiaturze używał ich do następnego pola, ale odkąd dodałem bit android: cyfry, to przestało działać. Próbowałem dodać \ n do validchars, ale to po prostu pozwala Zwroty Carriage w pojedynczych liniach tekstowych (!), Więc nie pomaga. Próbowałem gryźć z imeOptions (dodając actionNext itp.), Ale to też nie wydaje się to naprawić. Przeczytałem o TextWatchers i InputFilters, ale oba wydają się być zbyt skomplikowane dla tego, co próbuję zrobić i bit android:digits działa dobrze w zatrzymywaniu nieprawidłowych znaków.

Czy ktoś ma jakieś pomysły?

Używam Androida SDK w wersji 8 i kierujemy reklamy na urządzenia 2.2 i 2.3.5.

Odpowiedz

22

Po nieco szturchaniu z atrybutami dostępnymi dla EditText odkryłem, że kiedy dodaję androida: singleLine = "true" klawisz ENTER przenosi teraz fokus do następnego pola, nawet gdy android: cyfry ograniczają wprowadzone znaki. Problem rozwiązany! (dla mnie w każdym razie!)

+0

Ewentualnie, jeśli użytkownik chce mieć opcję "gotowe" zamiast następnej, zobacz to pytanie, które jest powiązane z http://stackoverflow.com/questions/1919742/android-editview- done-button – CrimsonX

+0

android: singleLine przestarzałe = (czy jest jakikolwiek inny sposób? –

+0

Wierzę, że powinieneś teraz użyć maxLines = "1" – Buzby

Powiązane problemy