-1
Androidで「ソフトキーボードの終了」イベントを処理したいと思いますが、私が理解する限り、これを行う唯一の解決策は、this answerに従って行ったEditText
サブクラス化です。ここでAndroidソフトキーボード:「終了」の「完了」
は私のクラスである:
public class EditTextCustom extends EditText {
public EditTextCustom(Context context) {
super(context);
}
public EditTextCustom(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EditTextCustom(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
if (listener != null)
listener.onStateChanged(this, true);
}
@Override
public boolean onKeyPreIme(int keyCode, @NonNull KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
Log.d("Info", "Soft keyboard was hidden");
if (listener != null) {
listener.onStateChanged(this, false);
}
}
return super.onKeyPreIme(keyCode, event);
}
KeyboardListener listener;
public void setOnKeyboardListener(KeyboardListener listener) {
this.listener = listener;
}
public interface KeyboardListener {
void onStateChanged(EditTextCustom keyboardEditText, boolean showing);
}
}
私は、ユーザーがソフトキーボードを閉じると、それが押された場合、それはアンドロイドで解釈されている、EditorInfo.IME_ACTION_DONE
として機能するように、このイベント(S)(KeyEvent.KEYCODE_BACK
とKeyEvent.ACTION_UP
)が必要です"Done"
およびEditText
への編集が適用されました。
これを実装するベストプラクティスはありますか?
Tried。did not work。 – TranslucentCloud
そして、私が理解する限り、これは "D 1 "が押されます。そして、「却下」が押されたときに私は行動が必要です。 – TranslucentCloud