Если вы используете android:inputType="textMultiLine|..."
в своем XML или используете соответствующий код Java:
editField.setInputType(
InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
, тогда единственное решение для отображения ✔︎ Готово или * 1007Кнопка ? Search предназначена для ответов на следующие вопросы:
Многострочный EditText с меткой действия Done SoftInput на 2.3
Таким образом, вы должны расширить EditText
и переопределитьonCreateInputConnection()
для ручной установки флагов IME_ACTION_xx;что-то вроде этого ...
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection connection = super.onCreateInputConnection(outAttrs);
int imeActions = outAttrs.imeOptions&EditorInfo.IME_MASK_ACTION;
if ((imeActions & EditorInfo.IME_ACTION_DONE) != 0) {
// clear the existing action
outAttrs.imeOptions ^= imeActions;
// set the DONE action
outAttrs.imeOptions |= EditorInfo.IME_ACTION_DONE;
}
if ((outAttrs.imeOptions & EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) {
outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
}
return connection;
}
Это потому, что всякий раз, когда вы включаете опцию "textMultiLine"
, она игнорирует любую настройку android:imeOptions="actionDone"
или android:imeActionLabel="actionDone"
, что очень странно и сбивает с толку.