EditText игнорирует ImeActionLabel

Используя Samsung Galaxy Ace, когда я создаю экземпляр editText, я пытаюсь установить пользовательский ярлык, который в настоящий момент игнорируется (без сторонней клавиатуры), такое же поведение на Samsung Galxy SII Это код, который я использую для установки параметров

eTHomeShare = (EditText) v.findViewById(R.id.eTHomeShare);
eTHomeShare.setImeActionLabel(getString(R.string.home_done),
            EditorInfo.IME_ACTION_UNSPECIFIED);

Это xml-определение EditText

           <EditText 
                android:id="@+id/eTHomeShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:imeActionLabel="@string/done"
                android:imeOptions="actionSend"
                android:inputType="text" />

ИЗМЕНИТЬ 1

Новый xml для editText, как предлагается CommonsWare

           <EditText 
                android:id="@+id/eTHomeShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical" />

Как вы можете видеть, я просто удалил 2 строки из xml, а в onCreateView моего фрагмента я использовал

 eTHomeShare.setImeActionLabel(getString(R.string.home_done),
            EditorInfo.IME_ACTION_SEND);

Теперь я не вижу кнопку Done/Send, (btw я всегда работаю над Portrait), но вместо этого символ Enter, тот же результат, если я удалю строки в initViews и дам исходное определение xml.

ИЗМЕНИТЬ 2 Немой ошибка строки: андроид: inputType = "текст" был удален из xml, только один из них на initViews работал нормально сразу.

Ответ 1

Есть много способов попытаться контролировать, что происходит на кнопке действия, в том числе:

  • imeOptions
  • imeActionLabel
  • setImeActionLabel()

Какая из них будет работать, будет зависеть от реализации редактора метода ввода (IME, a.k.a., soft keyboard). В идеале, каждый IME будет соблюдать их все... по крайней мере, при использовании по отдельности.

Однако:

  • Поведение, когда вы указываете его более одного, это undefined

  • Нет никаких требований, чтобы какой-либо IME даже имел кнопку действия, не говоря уже о почете вашего запроса на конкретную подпись на этой кнопке

В общем, я рекомендую указать ярлык кнопки действия в одном месте. Я предполагаю, что imeOptions, скорее всего, будет соблюден, поэтому, если желаемая метка является одним из стандартных параметров (например, "отправить" ), используйте это.