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が正しく機能するようにしてみました。前もって感謝します
EdittextにsingleLine = "true"を追加するだけです
Android:singleLine = "true"
_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には異なる動作があります。
「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;
}
});
こんにちはあなたはプログラムで設定することができます:
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で機能し、任意の数字で、アクションを選択するだけです