Ответ 1
Используйте TextView.setImeOptions и передайте его actionDone.
например textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
Когда пользователь нажимает кнопку EditView
, Android открывает клавиатуру, чтобы пользователь мог писать в EditView
.
Проблема заключается в том, что когда пользователь записывается, нет возможности скрыть клавиатуру. Пользователь должен нажать кнопку "Назад", чтобы скрыть клавиатуру.
Есть ли способ отобразить кнопку Done
на клавиатуре, которая скроет клавиатуру?
Используйте TextView.setImeOptions и передайте его actionDone.
например textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
Сначала вам нужно установить атрибут android:imeOptions
, равный actionDone
для целевого EditText, как показано ниже. Это изменит вашу кнопку "RETURN" на вашей мягкой клавиатуре EditTexts на кнопку "DONE".
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Enter some text"
android:imeOptions="actionDone"
/>
Включите и imeOptions
и singleLine
:
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:singleLine="true"
/>
андроид: imeActionLabel = "Готово"
андроид: SingleLine = "истинный"
в файле XML работает нормально. Но это также приведет к тому, что editText будет печатать в одной строке, которую вы, возможно, не захотите. Поэтому добавление следующего к вашему коду гарантирует, что вы не введете все в одну строку.
mainText.setHorizontallyScrolling(ложь);
mainText.setMaxLines( "Максимальное целочисленное значение, которое вы хотите предоставить" );
Используйте это:
android:singleLine="true"
Используйте эти две строки для EditText
android:imeActionLabel="Done"
android:singleLine="true"
или вы можете достичь этого Программно по этой строке.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Если свойство не изменяется для виджета, лучше использовать его как
android:imeOptions="actionDone"
в макете xml
.
Использование:
android:imeActionLabel="Done"
android:singleLine="true"
Для кода:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Я должен указать на это, поскольку многие люди могут бороться с этим, не зная проблемы.
Если вы хотите, чтобы kb спрятался при нажатии Done
, и вы установили android:imeOptions="actionDone"
и android:maxLines="1"
без, чтобы установить ваш EditText inputType
, он будет NOT работа по умолчанию inputType
для EditText не "text"
, как думают многие люди.
поэтому установка только inputType
даст вам результаты, которые вы хотите независимо от, что вы настраиваете на него как "text"
, "number"
,... и т.д.
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);
На самом деле вы можете настроить собственный текст на эту маленькую синюю кнопку. В xml файле просто используйте
android:imeActionLabel="whatever"
на вашем EditText.
Или в файле java используйте
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);
Я произвольно выбираю IME_ACTION_DONE как пример того, что должно быть во втором параметре для этой функции. Полный список этих действий можно найти здесь.
Следует отметить, что это не приведет к появлению текста на всех клавиатурах на всех устройствах. Некоторые клавиши не поддерживают текст на этой кнопке (например, swiftkey). И некоторые устройства не поддерживают его. Хорошим правилом является то, что если вы видите текст уже на кнопке, это изменит его на все, что вам нужно.
Используйте это
android:inputType="textAutoComplete"