-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);
}
}
我需要這個事件(S)(KeyEvent.KEYCODE_BACK
和KeyEvent.ACTION_UP
)作爲EditorInfo.IME_ACTION_DONE
,就是當用戶是否已經按下駁回軟鍵盤,它是由Android的解釋應用了"Done"
和對EditText
的編輯。
實現此目的的最佳實踐?
嘗試過,沒有工作 – TranslucentCloud
據我瞭解,當「D一個「被推。我需要在「解除」被推送時採取行動。 – TranslucentCloud