我目前正在开发我的活动,当你点击后退按钮而不是向下滑动键盘时,它将退出活动(正常的后退按钮行为)。这很好。
现在,我遇到的问题是,当显示键盘时,系统后退按钮(在Nexus设备上)指向下而不是向左指(返回活动)
显示左侧键盘点的示例。
有没有办法以编程方式控制并确保键盘启动时不会指向它?
答案 0 :(得分:1)
实际上并不好。键盘启动时Android上后退按钮的正常行为是隐藏键盘。如果我用键盘向上按下后退按钮以隐藏它并丢失我正在做的事情,我会非常生气并考虑你的应用程序错误。事实上,我的假设不是“他们覆盖后退按钮”,这将是“糟糕的应用程序崩溃”。
无法以编程方式更改该按钮的方向。向下箭头表示击中它将隐藏键盘。如果键盘没有被隐藏,因为你的应用程序违反了通常的规则,那么向下箭头是正确的 - 下一次按下后退按钮将关闭键盘。
答案 1 :(得分:0)
实际上,您可以覆盖Android中的后退按钮。这可以通过覆盖onKeyDown函数来实现,如下所示:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Hide keyboard and activate previous activity
return false;
}
return super.onKeyDown(keyCode, event);
}
(虽然我承认,我从来没有测试过这个,看它是否会在键盘打开时起作用......)
天啊,如果这不起作用你甚至可以做一些略微“hacky”的事情,就像这样:
boolean opened = true;
public void setListenerToRootView(){
final View activityRootView = getWindow().getDecorView().findViewById(android.R.id.content);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100 )
opened = true;
else if(opened == true)
opened = false;
}
});
}
这种方法显然可能会导致错误,如果他们有浮动键盘或特定的东西,但你可以根据需要处理它。
注意:这些都没有解决箭头指向下方的事实。我不认为你可以真正修改它,虽然你可以至少修改它的行为,只要键盘被移除就导航到上一个活动。