Как сделать кнопку Android EditView "готово"и скрыть клавиатуру при нажатии?



когда пользователь нажимает на EditView, Android открывает клавиатуру, чтобы пользователь мог писать в EditView.



проблема в том, что когда пользователь закончил писать, нет никакого способа скрыть клавиатуру. Пользователь должен нажать кнопку назад, чтобы скрыть клавиатуру.



есть ли способ, чтобы отобразить Done кнопка на клавиатуре, которая скроет клавиатуру?

837   13  

13 ответов:

использовать TextView.setImeOptions и передать его actionDone. как textView.setImeOptions(EditorInfo.IME_ACTION_DONE);

сначала вам нужно установить android:imeOptions

включить и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");

используйте этот:

android:singleLine="true"

используйте эти две строки для вашего EditText

android: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;
        }
    });

'

использование:

android:imeActionLabel="Done"
android:singleLine="true" 

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);

код:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

Я должен отметить, что многие люди могут бороться с этим, не зная проблемы.

если вы хотите, чтобы КБ скрыть при нажатии Done и набор android:imeOptions="actionDone" & android:maxLines="1"без настройка вашего EditText inputType это не работа по умолчанию inputType для EditText это не "text" как многие думают.

так, установка только inputType даст вам результаты, которые вы желаете все что вы устанавливаем его как "text","number", ...так далее.

На самом деле вы можете установить пользовательский текст на эту маленькую синюю кнопку. В xml-файле просто используйте

android:imeActionLabel="whatever"

на вашем EditText.

или в файле java используйте

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);

Я произвольно выбрать IME_ACTION_DONE в качестве примера того, что должно идти во втором параметре этой функции. Полный список этих действий можно найти здесь.

следует отметить, что это не приведет к появлению текста на всех клавиатурах на всех устройствах. Некоторые клавиатуры не поддерживают текст на этой кнопке (например, swiftkey). И некоторые устройства не поддерживают это. Хорошее правило, если вы видите текст уже на кнопке, это изменит его на все, что вы хотите.

Comments

    Ничего не найдено.