web-dev-qa-db-ja.com

Edittext imeOptions actionDoneが数字属性で機能していませんか?

Editextを持っています。これには、属性の数字とimeOptions(actionDone)が一緒に含まれています。

<Android.support.v7.widget.AppCompatEditText
        Android:id="@+id/edit_text_name"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:digits="1234567890abcdefghijklmnopqrstuvwxyz....."
        Android:hint="@string/item_name"
        Android:imeOptions="actionDone"
        Android:maxLines="1" />

数字&& imeOptions属性を一緒に使用しているときにactionDone(ソフトキーワードの[完了]ボタン)が見つかりません。フォーカスを変更しないEnterボタンしか見つかりません。数字属性をスキップして、imeOptionsが正しく機能するようにしてみました。前もって感謝します

11
Tijo Joseph

EdittextにsingleLine = "true"を追加するだけです

  Android:singleLine = "true"
11
Ranjith Kumar
_view.setRawInputType(view.getInputType & ~EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE)
_

setRawInputType()ではなくsetInputType()を呼び出すことが重要です。後者は、inputmethodに基づいてキーリスナーを設定し、_Android:digits_属性は破棄されるためです。 setRawInputType()はinputmethodのみを変更し、KeyListenerには触れません。さらに、_& ~EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE_は複数行モードを無効にするため、リターンキーは表示されず、代わりに選択したimeOptionが表示されます。

基本的に、singleLineとmaxLinesには異なる動作があります。

9
mathew11

「Android:digits」を使用したテストでは、edittextフィールドで問題が発生するようで、imeOptionsをAndroid:imeOptions = "actionDone"に設定すると、キーボードに「Done」ボタンが表示されませんでした。

一度使ったら

Android:inputType="text"

数字を設定しないと、キーボードに「完了」(またはデバイスのキーボードによってはチェックマーク)が表示され、次のコマンドを使用してキーストロークをキャプチャできます。

editextField.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
                int result = actionId & EditorInfo.IME_MASK_ACTION;
                switch(result) {
                    case EditorInfo.IME_ACTION_DONE:
                        // put your code here.
                        break;
                }
                return false;
            }
        }); 
1
angryITguy

こんにちはあなたはプログラムで設定することができます:

EditText edit = view.findViewById(R.id.memo_edit_text);
edit.setRawInputType(InputType.TYPE_CLASS_TEXT);
edit.setImeActionLabel("DONE", EditorInfo.IME_ACTION_DONE);
edit.setImeOptions(EditorInfo.IME_ACTION_DONE);

IMEアクションに関連付けるEditText上
textMultiLineで機能し、任意の数字で、アクションを選択するだけです

クレジット: https://stackoverflow.com/a/52503760/11858207

0
Mathieu Perroud