Как сделать кнопку Android EditView "готово"и скрыть клавиатуру при нажатии?
когда пользователь нажимает на EditView, Android открывает клавиатуру, чтобы пользователь мог писать в EditView.
проблема в том, что когда пользователь закончил писать, нет никакого способа скрыть клавиатуру. Пользователь должен нажать кнопку назад, чтобы скрыть клавиатуру.
есть ли способ, чтобы отобразить Done кнопка на клавиатуре, которая скроет клавиатуру?
13 ответов:
использовать TextView.setImeOptions и передать его actionDone. как
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
включить и
imeOptionsиsingleLine:<EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:imeOptions="actionDone" android:singleLine="true" />
android:imeActionLabel="Done" android:singleLine="true"в XML-файле работает просто отлично. Но это также вызовет
editTextчтобы продолжать печатать в одной строке, которую вы, возможно, не хотите. Поэтому добавление следующего кода гарантирует, что вы не будете набирать все в одной строке.mainText.setHorizontallyScrolling(false); mainText.setMaxLines("Maximum integer value that you want to provide");
используйте эти две строки для вашего
EditTextandroid:imeActionLabel="Done" android:singleLine="true"или вы можете достичь этого программно с помощью этой строки.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Если свойство не изменяется для виджета может быть лучше использовать как
android:imeOptions="actionDone"в макете .
для получения кнопки Готово
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);и
android:inputType="text"в xmlдля обработки на сделано нажал с клавиатуры
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE){ // Your action on done return true; } return false; } });'
ActionDone используется, когда нажмите кнопку Далее на клавиатуре в это время клавиатура скрывается.Используйте в редактировании текста или AppcompatEdit
XML
1.1 если вы используете AppCompatEdittext
<android.support.v7.widget.AppCompatEditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionDone"/>1.2 если вы используете Edittext
<EditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionDone"/>JAVA
EditText edittext= (EditText) findViewById(R.id.edittext); edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
Я должен отметить, что многие люди могут бороться с этим, не зная проблемы.
если вы хотите, чтобы КБ скрыть при нажатии
Doneи наборandroid:imeOptions="actionDone"&android:maxLines="1"без настройка вашего EditTextinputTypeэто не работа по умолчаниюinputTypeдля EditText это не"text"как многие думают.так, установка только
inputTypeдаст вам результаты, которые вы желаете все что вы устанавливаем его как"text","number", ...так далее.
На самом деле вы можете установить пользовательский текст на эту маленькую синюю кнопку. В xml-файле просто используйте
android:imeActionLabel="whatever"на вашем EditText.
или в файле java используйте
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);Я произвольно выбрать IME_ACTION_DONE в качестве примера того, что должно идти во втором параметре этой функции. Полный список этих действий можно найти здесь.
следует отметить, что это не приведет к появлению текста на всех клавиатурах на всех устройствах. Некоторые клавиатуры не поддерживают текст на этой кнопке (например, swiftkey). И некоторые устройства не поддерживают это. Хорошее правило, если вы видите текст уже на кнопке, это изменит его на все, что вы хотите.
Comments