ユーザーがEditView
をクリックすると、Androidがキーボードを開き、ユーザーがEditView
に書き込むことができます。
問題は、ユーザーが書き込みを終えると、キーボードを非表示にする方法がないことです。ユーザーは、戻るボタンを押してキーボードを非表示にする必要があります。
キーボードを非表示にするDone
ボタンをキーボードに表示する方法はありますか?
TextView.setImeOptions を使用して、actionDoneを渡します。 textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
など
最初に、以下に示すように、ターゲット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"
/>
含める両方imeOptions
およびsingleLine
:
<EditText
Android:id="@+id/edittext_done"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:imeOptions="actionDone"
Android:singleLine="true"
/>
Android:imeActionLabel="Done"
Android:singleLine="true"
XMLファイルでは正常に機能します。ただし、これにより、editText
が1行に入力し続けてしまう可能性もあります。したがって、コードに次の行を追加すると、すべてを1行で入力しないようにすることができます。
mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");
これを使って:
Android:singleLine="true"
完了ボタンを取得するため
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;
}
});
`
これらの2行をEditText
に使用します
Android:imeActionLabel="Done"
Android:singleLine="true"
または、この行でプログラムで達成できます。
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
ウィジェットのプロパティが変更されない場合、レイアウトxml
ファイルでAndroid:imeOptions="actionDone"
のように使用した方がよい場合があります。
つかいます:
Android:imeActionLabel="Done"
Android:singleLine="true"
多くの人が問題を知らなくてもそれに取り組むことができるので、私はそれを指摘しなければなりません。
Done
をクリックしたときにKBを非表示にし、Android:imeOptions="actionDone"
&Android:maxLines="1"
を設定した場合without EditText inputType
を設定しますNOT多くの人が考えるように、EditTextのデフォルトinputType
は"text"
ではありません。
したがって、inputType
のみを設定すると、希望する結果が得られますwhatever"text"
、"number"
、...など.
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);
コードの場合:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
実際、その小さな青いボタンにカスタムテキストを設定できます。 xmlファイルでは
Android:imeActionLabel="whatever"
editTextで。
または、Javaファイルで使用します
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);
この関数の2番目のパラメーターに入れるべきものの例として、IME_ACTION_DONEを任意に選択します。これらのアクションの完全なリストは here にあります。
これにより、すべてのデバイスのすべてのキーボードにテキストが表示されるわけではないことに注意してください。一部のキーボードは、そのボタン上のテキストをサポートしていません(例:swiftkey)。また、一部のデバイスではサポートされていません。良いルールは、ボタン上にすでにテキストが表示されている場合、これは必要なものに変更します。