4

これらのオプションを同時に設定する方法:

  • android:minLines="3"
  • android:inputType="textMultiLine"
  • android:imeOptions="actionDone"

置くとすぐに、キーボードは自動的にキーOKをキーEnterandroid:inputType="textMultiLine"に置き換えます。両方のキーを持つことが可能かどうかは誰にもわかりませんか?

注意:この答えは私が探しているものではありません。両方の鍵が欲しいです。

4

4 に答える 4

3

こんにちは、私も同じ問題に直面しています。最終的にこれに対する解決策を得ました。

変化する

android:inputType="textMultiLine"

android:inputType="text"

.java ファイル内で、id を使用して EditText にアクセスします。

editText.setHorizontallyScrolling(false);

editText.setMaxLines(3);

次に、editText に OnEditorAction を実装します。

 editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == 4) { //actionId 4 for actionDone And 6 for actionSend


                //perform action what you want

                return true;
            } else
                return false;
        }
    });
于 2016-09-29T12:56:42.067 に答える
0

保証されている唯一のことは、Android がinputTypeandimeOptionsを IME に渡すことです。それらに対して IME が行うことは、実装に依存します。一部の IME、複数行モードのときに両方のキーを表示するのに十分な画面領域があると判断する場合がありますが、その動作に依存するべきではありません。

于 2012-08-17T12:23:04.977 に答える
0

同様の質問に対する回答をここに書いています: https://stackoverflow.com/a/42236407/7550472そして、他に何も機能しなかったので、それは私にとって救いの恵みであることが判明しました。簡単にアクセスできるように、私のような怠惰な人のためにここにもコードを貼り付けます;)。

あなたのJavaコードで:

////////////Code to Hide SoftKeyboard on Enter (DONE) Press///////////////
editText.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setImeActionLabel("DONE",EditorInfo.IME_ACTION_DONE);              //Set Return Carriage as "DONE"
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
    {
                if (event == null) {
                    if (actionId == EditorInfo.IME_ACTION_DONE) {
                        // Capture soft enters in a singleLine EditText that is the last EditText
                        // This one is useful for the new list case, when there are no existing ListItems
                        EditText.clearFocus();
                        InputMethodManager inputMethodManager = (InputMethodManager)  getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
                        inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
                    }

                    else if (actionId == EditorInfo.IME_ACTION_NEXT) {
                        // Capture soft enters in other singleLine EditTexts
                    } else if (actionId == EditorInfo.IME_ACTION_GO) {
                    } else {
                        // Let the system handle all other null KeyEvents
                        return false;
                    }
                } 
        else if (actionId == EditorInfo.IME_NULL) {
                    // Capture most soft enters in multi-line EditTexts and all hard enters;
                    // They supply a zero actionId and a valid keyEvent rather than
                    // a non-zero actionId and a null event like the previous cases.
                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
                        // We capture the event when the key is first pressed.
                    } else {
                        // We consume the event when the key is released.
                        return true;
                    }
                } 
        else {
                    // We let the system handle it when the listener is triggered by something that
                    // wasn't an enter.
                    return false;
                }
                return true;
        }
});

XML で定義されたminLinesは同じままですが、他の 2 つの属性は Java コードで処理されるため必要ありません。

于 2017-02-14T21:24:46.497 に答える