回答:
TextView.setImeOptionsを使用して、actionDoneを渡します。お気に入りtextView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.singleLine(true)
これをプログラムで機能させるには、追加する必要がありました。
最初に、以下に示すように、ターゲットEditTextにandroid:imeOptions
等しい属性を設定する必要がありactionDone
ます。これにより、EditTextのソフトキーボードの[RETURN]ボタンが[DONE]ボタンに変わります。
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Enter some text"
android:imeOptions="actionDone"
/>
android:singleLine="true"
これをxml経由で機能させるには、追加する必要がありました
との両方 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");
完了ボタンを取得するため
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;
}
});
`
これを使って:
android:singleLine="true"
actionDone
一部のデバイスの反応が異なる場合に備えて、そこにいるとエラーになることにしました。
コードの場合:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
ActionDoneは、キーボードの非表示時にキーボードの次のボタンをクリックしたときに使用されます。テキストの編集または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);
多くの人が問題を知らずにそれに苦労することができるので、私はそれを指摘しなければなりません。
あなたはクリックする非表示にするキロバイトをしたい場合はDone
、あなたが設定android:imeOptions="actionDone"
&android:maxLines="1"
なしであなたのEditTextを設定するinputType
には、意志はありませんデフォルトとしての仕事inputType
のEditTextのためではありません"text"
多くの人が考えるほど。
だから、設定のみ inputType
、あなたが望む結果を与えるものは何でもあなたはそれが好きに設定しているか"text"
、"number"
などを、...。
実際、カスタムテキストをその小さな青いボタンに設定できます。xmlファイルで使用するだけ
android:imeActionLabel="whatever"
EditTextで。
またはJavaファイルで
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);
この関数の2番目のパラメーターに入力する内容の例として、任意にIME_ACTION_DONEを選択します。これらのアクションの完全なリストはここにあります。
これにより、すべてのデバイスのすべてのキーボードにテキストが表示されるわけではないことに注意してください。一部のキーボードは、そのボタンのテキストをサポートしていません(例:swiftkey)。また、一部のデバイスはそれをサポートしていません。良いルールは、ボタンに既にテキストが表示されている場合は、これでテキストを変更します。
Kotlinでキーボード非表示+完了アクションを処理する直接的な方法は次のとおりです。
// Set action
edittext.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
// Hide Keyboard
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
true
}
false
}
これを使用edittext.onDone {/*action*/}
して、メインコードを呼び出します。読みやすく、保守しやすい
edittext.onDone { edittext.hideKeyboard() }
fun View.hideKeyboard() {
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}
fun EditText.onDone(callback: () -> Unit) {
// These lines optional if you don't want to set in Xml
imeOptions = EditorInfo.IME_ACTION_DONE
maxLines = 1
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
callback.invoke()
true
}
false
}
}
キーボードの操作を簡略化する他の方法が必要な場合(表示、閉じる、フォーカス):この投稿を読む
コードでない場合は、これらのオプションをedittext Xmlに追加することを忘れないでください。
<EditText ...
android:imeOptions="actionDone"
android:inputType="text"/>
inputType="textMultiLine"
サポートが必要ですか?この記事を読んし、追加しないimeOptions
か、inputType
XMLで
使用している場合
android:imeOptions="actionDone"
その後、あなたは使用する必要があります
android:inputType="text"
その後、あなただけがキーボードのアクション完了ボタンを見ることができます。