gpt4 book ai didi

android - 当我单击硬件后退按钮并且键盘已关闭时,上下文操作栏会隐藏

转载 作者:行者123 更新时间:2023-11-30 02:56:53 25 4
gpt4 key购买 nike

我正在使用上下文操作栏进行编辑,当我显示键盘时,我想通过按硬件后退按钮将其隐藏,它隐藏了键盘,但它也取消了上下文操作栏,我真的找不到如何保持它。

有人吗?

最佳答案

您应该尝试覆盖 Back Key 硬件,并使用 boolean 处理预期的行为,如下所示:

// boolean isVisible to retrieve the state of the SoftKeyboard
private boolean isVisible = false;

// isVisible becomes 'true' if the user clicks on EditText

// then, if the user press the back key hardware, handle it:
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// check isVisible
if(isVisible) {
// hide the keyboard
InputMethodManager mImm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
isVisible = false;
} else {
// remove the CAB
mActionMode.finish();
}
}
return false;
}

另一种解决方案可能是调用 dispatchKeyEvent 方法,该方法在显示 CAB 时仍会被调用:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
// check CAB active and isVisible softkeyboard
if(mActionModeIsActive && isVisible) {
InputMethodManager mImm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
isVisible = false;
return true;
// Maybe you might do not call the 'else' condition, anyway..
} else {
mActionMode.finish();
return true;
}
}
return super.dispatchKeyEvent(event);
}

这应该可以解决问题,但我还没有测试过。希望这对您有所帮助。
来源:How to Override android's back key when softkeyboard is open - Prevent to cancel Action Mode by press back button

关于android - 当我单击硬件后退按钮并且键盘已关闭时,上下文操作栏会隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com