4

非常に簡単です。 inputField.setImeOptions(EditorInfo.IME_ACTION_DONE); ソフトキーボードに、carraigereturnの代わりに「done」キーを表示させるために使用されます。

電話(Samsung Galaxy S)をジンジャーブレッドに更新したので、このコード行は効果がありません。

何か案は?

4

3 に答える 3

9

私もこの問題を見てきましたinputType. が(デフォルト)に設定されている場合、実際にはすべてのimeOptionsプロパティ (他のいくつかのプロパティも含む) が完全に無視されます。inputTypeEditorInfo.TYPE_NULL

したがって、これらのいずれかを試してみてください(私が選んnextだものですが、任意のタイプを入れることができます):

XML:

    android:inputType="text"
    android:imeOptions="actionNext"

ジャワ

    text.setInputType(EditorInfo.TYPE_CLASS_TEXT);
    text.setImeOptions(EditorInfo.IME_ACTION_NEXT);

そして、本当にやりたい場合はsetImeActionLabel('Add', SOME_ID)、アクションキーを使用して完全に構成できます (xml に相当するものもあります)。

そうは言っても。個々のデバイスについては完全に間違っている可能性がありますが、これはテストが簡単で、常に問題を解決しているように見えるので、共有する必要があります.

于 2013-02-11T15:16:50.900 に答える
5

私は同じ問題を研究しています。お使いのデバイスの IME (インプット メソッド エディター) に問題があり、ソフト キーボードの [完了] ボタンや次のボタンが表示されません。HTC センスには独自のソフト キーボードがあり、ime ディレクティブを認識しません。他にもあり、あなたのサムスンは明らかに1つです。Androidの断片化に頭を悩ませたのはこれが初めてです。

XML での設定、インフレート、ヘルパー クラスの作成、およびその他のヒープを試してみました。単純にうまくいかないことがわかって安心しました。

そのため、キーボード エディターが入力を完了する代わりに、完了ボタンを追加する必要があります。相対レイアウトを使用して編集テキストの最後に追加して、それらを揃えています。その機能を持つもののために IME コードを残しておきます.... これが唯一の迅速な解決策であり、もう 1 つはアプリ用のカスタム ソフト キーボード全体を作成することです。

于 2012-04-10T03:55:09.217 に答える
1

I've checked inside the method TextView.setInputType and at the end of this method, InputMethodManager restarts the keyboard. So this is the trigger to change the imeOptions, not InputType.TYPE_NULL.

private void changeInputTypeAndImeOptions(EditText fieldValue, int inputType, int imeOption) {
    if (inputType == InputType.TYPE_NULL) inputType = fieldValue.getInputType();
    fieldValue.setImeOptions(imeOption | EditorInfo.IME_FLAG_NO_FULLSCREEN);
    //Makes the trigger for the imeOptions to change while typing!
    //fieldValue.setInputType(InputType.TYPE_NULL);
    fieldValue.setInputType(inputType);
    InputMethodManager imm = (InputMethodManager)
            mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) imm.restartInput(fieldValue);
}

NOTE:

Setting the setInputType with same previous value, doesn't give any effect so better to restart imm (this doesn't close the kb, only refreshes the buttons).

Also fieldValue.setInputType(InputType.TYPE_NULL); has a bad effect the return button is visible during the multiple set, that's why is commented and it should be removed. Better restart the kb with imm.

于 2015-05-17T13:59:36.550 に答える