web-dev-qa-db-ja.com

Android EditViewの[完了]ボタンを作成し、クリックしたときにキーボードを非表示にするにはどうすればよいですか?

ユーザーがEditViewをクリックすると、Androidがキーボードを開き、ユーザーがEditViewに書き込むことができます。

問題は、ユーザーが書き込みを終えると、キーボードを非表示にする方法がないことです。ユーザーは、戻るボタンを押してキーボードを非表示にする必要があります。

キーボードを非表示にするDoneボタンをキーボードに表示する方法はありますか?

102
d-man

TextView.setImeOptions を使用して、actionDoneを渡します。 textView.setImeOptions(EditorInfo.IME_ACTION_DONE);など

127
dmazzoni

最初に、以下に示すように、ターゲットEditTextのAndroid:imeOptions属性をactionDoneに設定する必要があります。これにより、EditTextのソフトキーボードの[戻る]ボタンが[完了]ボタンに変更されます。

<EditText 
    Android:id="@+id/edittext_done"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:hint="Enter some text"
    Android:imeOptions="actionDone"
    />
135
Paresh Mayani

含める両方imeOptionsおよびsingleLine

<EditText 
   Android:id="@+id/edittext_done"
   Android:layout_width="fill_parent"
   Android:layout_height="wrap_content"
   Android:imeOptions="actionDone"
   Android:singleLine="true"
   />
81
Oded Breiner
Android:imeActionLabel="Done" 
Android:singleLine="true"

XMLファイルでは正常に機能します。ただし、これにより、editTextが1行に入力し続けてしまう可能性もあります。したがって、コードに次の行を追加すると、すべてを1行で入力しないようにすることができます。

mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");
34
Santosh Pillai

これを使って:

Android:singleLine="true"
14
Frank Nguyen

完了ボタンを取得するため

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

そして

Android:inputType="text" xml

キーボードからクリックされた完了の処理用

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
            if(actionId == EditorInfo.IME_ACTION_DONE){
                // Your action on done
                return true;
            }
            return false;
        }
    });

`

12
Shangeeth Sivan

これらの2行をEditTextに使用します

Android:imeActionLabel="Done"
Android:singleLine="true"

または、この行でプログラムで達成できます。

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
10
NarenderNishad

ウィジェットのプロパティが変更されない場合、レイアウトxmlファイルでAndroid:imeOptions="actionDone"のように使用した方がよい場合があります。

7
Tom

つかいます:

Android:imeActionLabel="Done"
Android:singleLine="true" 
6
Kiran Mahale

多くの人が問題を知らなくてもそれに取り組むことができるので、私はそれを指摘しなければなりません。

DoneをクリックしたときにKBを非表示にし、Android:imeOptions="actionDone"Android:maxLines="1"を設定した場合without EditText inputTypeを設定しますNOT多くの人が考えるように、EditTextのデフォルトinputType"text"ではありません。

したがって、inputTypeのみを設定すると、希望する結果が得られますwhatever"text""number"、...など.

5
Muhammed Refaat

ActionDoneは、キーボードが非表示のときにキーボードの次のボタンをクリックしたときに使用されます。EditTextまたはAppcompatEditで使用します。

XML

1.1 AppCompatEdittextを使用する場合

    <Android.support.v7.widget.AppCompatEditText
    Android:id="@+id/edittext"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:imeOptions="actionDone"/>

1.2 Edittextを使用する場合

    <EditText
    Android:id="@+id/edittext"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:imeOptions="actionDone"/>

Java

EditText edittext= (EditText) findViewById(R.id.edittext);
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
5
Raj

コードの場合:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
4
Steven.Nguyen

実際、その小さな青いボタンにカスタムテキストを設定できます。 xmlファイルでは

Android:imeActionLabel="whatever"

editTextで。

または、Javaファイルで使用します

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);

この関数の2番目のパラメーターに入れるべきものの例として、IME_ACTION_DONEを任意に選択します。これらのアクションの完全なリストは here にあります。

これにより、すべてのデバイスのすべてのキーボードにテキストが表示されるわけではないことに注意してください。一部のキーボードは、そのボタン上のテキストをサポートしていません(例:swiftkey)。また、一部のデバイスではサポートされていません。良いルールは、ボタン上にすでにテキストが表示されている場合、これは必要なものに変更します。

2
Xar E Ahmer