android - 显示软键盘后禁用粘性沉浸模式

标签 android fullscreen android-4.4-kitkat

我有一个应用需要在大部分时间全屏显示。我知道,如果显示警报或显示其他窗口,则在 Activity 窗口的顶部,全屏会暂时删除。不幸的是,当为 EditText 或其他内容显示软键盘时,当用户完成键盘操作时,不会恢复全屏沉浸式模式。

知道如何实现吗?

最佳答案

取自 this sample app by Google ,您需要将此附加到 Activity 的末尾,在最后一个结束括号之前:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    // When the window loses focus (e.g. the action overflow is shown),
    // cancel any pending hide action. When the window gains focus,
    // hide the system UI.
    if (hasFocus) {
        delayedHide(300);
    } else {
        mHideHandler.removeMessages(0);
    }
}

private void hideSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | 
        View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | 
        View.SYSTEM_UI_FLAG_FULLSCREEN | 
        View.SYSTEM_UI_FLAG_LOW_PROFILE | 
        View.SYSTEM_UI_FLAG_IMMERSIVE
    );
}

private void showSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    );
}

private final Handler mHideHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        hideSystemUI();
    }
};

private void delayedHide(int delayMillis) {
    mHideHandler.removeMessages(0);
    mHideHandler.sendEmptyMessageDelayed(0, delayMillis);
}

而且你应该很好。 :)

关于android - 显示软键盘后禁用粘性沉浸模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24187728/

相关文章:

android - 解析来自 pubnub 的传入消息

android - iPhone 上的 <EMBED> 标记 : Not getting the scrollbar

android - 如何在布局编辑器中模拟沉浸式模式

android - 如何在 Android KitKat 或更高版本上接收传入的短信?

java - 无法从我的应用程序连接到 IMS apn

android - 相对布局的对角溢出背景

android - 使用MQTT协议(protocol)的android消息系统的可行性

css - 简单的全屏CSS slider

android - 如何在Android中将壁纸设置为设备的整个屏幕

Moto G 中的 Android 调试