私の「虫のような振る舞い」は、imeActionLabel
物事を複雑にすることによるものであることがわかりました。カスタムリターンキーラベルを作成する方法としてテキストフィールドガイドに記載されているため、これを使用しただけです。これがロリポップでの私のテストの結果です、
ケース1:デフォルト、リターンキーシンボル=閉じ角かっこ
<EditText
android:singleLine="true"
android:inputType="textUri"/>
onEditorActionは1回呼び出されます。
- KeyEvent = null、actionId = 5 =
EditorInfo.IME_ACTION_NEXT
- trueを返すと、カーソルはEditTextのままになり、キーボードが開きます
- falseを返すと、カーソルは次のフォーカス可能な位置に移動し、必要に応じてキーボードを開きます
ケース2 imeOptions
:、リターンキーシンボル=チェックマーク
<EditText
android:singleLine="true"
android:inputType="textUri"
android:imeOptions="actionDone"/>
onEditorActionは1回呼び出されます。
- KeyEvent = null、actionId = 6 =
EditorInfo.IME_ACTION_DONE
- trueを返すと、カーソルはEditTextのままになり、キーボードが開きます
- falseを返すと、カーソルはEditTextに残り、キーボードは閉じます
ケース3 imeActionLabel
:、リターンキーシンボル="URdone"
<EditText
android:singleLine="true"
android:inputType="textUri"
android:imeOptions="actionDone"
android:imeActionLabel="URdone"/>
onEditorActionは複数回呼び出すことができます。
KeyEvent = null、actionId = 0
- trueを返すと、カーソルはEditTextに留まり、キーボードが開いたままになり、onEditorActionは2回呼び出されません。
- falseを返す場合、onEditorActionは2番目の時間と呼ばれます。
KeyEvent = KeyEvent.ACTION_DOWN
、actionId = 0
- falseを返すと、カーソルは次のフォーカス可能な場所に移動し、必要に応じてキーボードを開きます。onEditorActionは3回呼び出されません。
- trueを返す場合、onEditorActionは3回目と呼ばれます。
KeyEvent = KeyEvent.ACTION_UP
、actionId = 0
- trueを返すと、カーソルはEditTextのままになり、キーボードが開きます
- falseを返すと、カーソルは次のフォーカス可能な位置に移動し、必要に応じてキーボードを開きます
ノート:
actionId=0がfromEditorInfo.IME_ACTION_UNSPECIFIED
または。かどうかはわかりませんEditorInfo.IME_NULL
。
次のフォーカス可能オブジェクトが編集不可の場合、リターンキー記号は左向きの矢印になります。
setOnFocusChangeListener
をオーバーライドするために使用することもできますonFocusChange
。これは、上記のカーソルの動作に従って呼び出されます。