Problem jesteś kliknięcie na klucz zamiast actionNext trzeba, aby przesunąć kursor do najbliższego EditText
Określ Input Method akcji Wpisz
Najbardziej miękkie metody wprowadzania zapewniają przycisk akcji użytkownika w dolnym rogu odpowiedni dla bieżącego pola tekstowego. Domyślnie system używa tego przycisku do działania Następna lub Gotowa, chyba że pole tekstowe zezwala na tekst wieloliniowy (na przykład z android: inputType = "textMultiLine"), w którym to przypadku przycisk czynności to karetka powrót. Można jednak określić dodatkowe akcje, które mogą być bardziej odpowiednie dla pola tekstowego, na przykład Wyślij lub Przejdź.
Powoduje powrót karetki do przycisku akcji. Więc oznacza to, że nie ognia android:nextFocusDown
Przede wszystkim, pozwala zobaczyć, co jest różnica między SingleLine która jest przestarzała i maxLines
SingleLine
Kiedy zestaw android:singleLine="true"
jedna linia tekstu jest w EditText widoczny, ale klawisz Enter nie jest widoczny na klawiaturze
maxLines
po ustawieniu atrybutu android:maxLines
z określoną wartością tylko ta sama ilość tekstu liniowego jest widoczna w EditText i klawisz Enter na klawiaturze widoczny również dla Wprowadzanie.
Po kliknięciu przycisku akcji następuje uruchomienie akcji zgodnie z kodem. Również trzeba zmienić atrybut InputType z android:inputType="textMultiLine"
jeśli używasz atrybutu android:maxLines
maxLines
dodanych w API poziom 1 int maxLines Powoduje TextView być co najwyżej to wiele linii wysoki.W przypadku użycia w edytowalnym tekście, wartość atrybutu inputType musi być połączona z flagą textMultiLine dla atrybutu maxLines do zastosowania.
Może być wartością całkowitą, np. "100".
Kiedy dostosować swój kod z odpowiednimi atrybutami nadal było strzelających klucz zamiast IME_ACTION_NEXT którego chcesz Enter. Myślę, że to nie rozwiąże problemu z powodu
textMultiLine Może być łączony z tekstem i jego odmian, aby umożliwić wiele wierszy tekstu w polu. Jeśli ta flaga nie zostanie ustawiona, pole tekstowe zostanie ograniczone do pojedynczej linii. Odpowiada TYPE_TEXT_FLAG_MULTI_LINE.
TYPE_TEXT_FLAG_MULTI_LINE
dodano poziomu API 3 int TYPE_TEXT_FLAG_MULTI_LINE Flag dla TYPE_CLASS_TEXT: wielokrotne linie tekstu mogą być wprowadzone w dziedzinie. Jeśli ta flaga nie jest ustawiona, pole tekstowe zostanie ograniczone do pojedynczej linii . IME może również nie wyświetlać klawisza Enter, gdy ta flaga nie jest ustawiona, ponieważ nie powinno być potrzeby tworzenia nowych linii.
Stała Wartość: 131072 (0x00020000)
ROZWIĄZANIE:
Podklasa EditText i dostosować opcje IME. Po tym czasie nie potrzebujesz atrybutów android:maxLines
ani android:singleLine
.
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection connection = super.onCreateInputConnection(outAttrs);
int imeActions = outAttrs.imeOptions&EditorInfo.IME_MASK_ACTION;
if ((imeActions&EditorInfo.IME_ACTION_NEXT) != 0) {
// clear the existing action
outAttrs.imeOptions ^= imeActions;
// set the DONE action
outAttrs.imeOptions |= EditorInfo.IME_ACTION_NEXT;
}
if ((outAttrs.imeOptions&EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) {
outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
}
return connection;
}
Możesz również sprawdzić inny wpis here. I rekonfiguracji przyjętej odpowiedzi na to stanowisko na celu
używam 'android: focusableInTouchMode = "true"', ale bez zmian. –