android - 尽管出现了弹出窗口、覆盖层或对话框,但如何隐藏导航栏?

标签 android dialog popup fullscreen navbar

我正在尝试创建一个在特定时间启动的全屏应用程序,当它启动时,它应该自动变为全屏。我在全屏启动它时没有任何问题。但是,如果存在弹出窗口或窗口,然后启动我的 Activity ,则导航栏永远不会隐藏(换句话说,无法实现全屏状态)。我制作了一个 5 秒的视频来演示这个问题。

您可以在此处查看该错误:http://tinypic.com/player.php?v=2qkplwp%3E&s=9#.V3fZ8KLA3Fk

我已经尝试了所有带有标志的方法,但似乎无法完成。我环视了 Playstore,似乎许多锁屏应用程序尤其可以轻松隐藏导航栏,尽管存在任何弹出窗口\其他对话框(SlideLock、Echo Lock Screen)。

下面是我的简单 Activity 代码:

list 中:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

windowlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#a9e487">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Exit"
    android:id="@+id/button"
    android:layout_gravity="center"
    android:layout_marginTop="100dp" />
</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    final static WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS |
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION |
            WindowManager.LayoutParams.FLAG_FULLSCREEN |
            WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, //Covers status bar
            PixelFormat.TRANSPARENT);

    final static int flags = 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_IMMERSIVE_STICKY;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);

        final View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(flags);

        final ViewGroup viewGroup = (ViewGroup) getLayoutInflater().inflate(R.layout.windowlayout, null);
        final WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        windowManager.addView(viewGroup, params);

        viewGroup.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                windowManager.removeView(viewGroup);
            }
        });

    }

}

最佳答案

This worked for me:

  mypopupWindow = PopupWindow(
                    view,
                    RelativeLayout.LayoutParams.MATCH_PARENT,
                    RelativeLayout.LayoutParams.MATCH_PARENT,
                    false
            )

或者

mypopupWindow.isFocusable = false

关于android - 尽管出现了弹出窗口、覆盖层或对话框,但如何隐藏导航栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951491/

相关文章:

android - 在 android 中使用 Web 服务和 Ksoap2 获取图像

java - 如何缩放粉色框,使其完美适合电子表格的网格,无论手机屏幕尺寸如何?安卓工作室

javascript - 在 Metro UI 中使用对话框

java - 致命异常 : android. view.WindowManager$BadTokenException 无法添加窗口—— token 无效;你的 Activity 在运行吗?

javascript - 显示弹出脚本以使其在每个浏览器 session 中仅弹出一次

android - 如何在 Android 10 中根据包名共享不同的文本?

java - 有没有办法防止int值删除第一个0?

Delphi TFontDialog - 如何缩放高 Dpi?

ios - iPhone 应用程序的灵活弹出菜单窗口

java - 如何检测鼠标(指针)何时位于 JList 中的文本上?