繁体   English   中英

更改系统后退按钮方向

[英]Change System Back Button Orientation

我目前正在开发活动,当您单击后退按钮时,而不是向下滑动键盘,它将退出活动(正常的后退按钮行为)。 很好

现在,我遇到的问题是,显示键盘时,系统后退按钮(在Nexus设备上)指向下而不是指向左(返回活动) 在此处输入图片说明

显示键盘左键示例。

在此处输入图片说明

有没有一种方法可以通过编程控制并确保在键盘弹起时不会指向下方?

那实际上是不好的。 按下键盘时,Android上后退按钮的正常行为是隐藏键盘。 如果我在按下键盘的同时按下后退按钮将其隐藏起来而丢失了正在做的事情,那我会非常生气,并认为您的应用有问题。 实际上,我的假设不是“它们覆盖了后退按钮”,而是“糟糕的应用程序崩溃了”。

无法以编程方式更改该按钮的方向。 向下箭头表示点击将隐藏键盘。 如果由于您的应用违反了常规规则而没有隐藏键盘,则向下箭头是正确的-再次按下后退按钮将关闭键盘。

实际上,您可以覆盖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);
}

(尽管我承认,但我从未测试过此功能是否可以在键盘打开的情况下使用它。)

天哪,如果这不起作用,您甚至可以做些“变态”的事情,像这样:

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;
        }
    });
}

如果这种方法具有浮动键盘或某些特定功能,则显然可能会导致错误,但是您可以根据需要进行处理。

注意:所有这些都不能解决箭头指向下方的事实。 我认为您无法真正修改它,尽管您至少可以通过在每次卸下键盘时导航至上一个活动来修改其行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM