如何检查Android中是否显示状态栏

时间:2011-12-23 14:55:41

标签: android

我想要达到的目的是,除非他按下其中一个提供的按钮,否则用户不能退出活动。
我已经抓住了主页和后退按钮,但是当我尝试删除状态栏时,我的问题就开始了。 我想拥有以下其中一项:

  • 状态栏在Activity2中始终不可见
  • 状态栏无法访问,可见,但您无法激活它(请参阅来电屏幕示例)
  • 如果我选择解决方案1,如果我的应用程序正在运行并且Activity1显示状态栏,则状态栏下显示活动2,状态栏覆盖活动2的顶部,这是不可能的 除非我从另一个应用程序启动Activity2,然后Activity2没有显示状态栏。 Status bar overlays Activity2 No Status Bar visible here 我做错了什么?

    AndroidManifest.xml的一部分:

            <activity
            android:label="@string/app_name"
            android:launchMode="standard"
            android:name=".Activity1"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:launchMode="standard"
            android:name=".Activity2"
            android:noHistory="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter >
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MONKEY" />
            </intent-filter>
        </activity>
    

    3 个答案:

    答案 0 :(得分:2)

    答案 1 :(得分:1)

    我必须在android中启动我的活动:launchMode =“singleInstance”,在OnAttachedToWindow()中我必须调用this.getWindow()。setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 现在,即使同一应用程序中的其他活动显示状态栏,也不会显示状态栏。

    答案 2 :(得分:1)

    要检查状态栏的可见性,请尝试以下代码:

    public boolean isStatusBarVisible() {
        Rect rectangle = new Rect();
        Window window = getActivity().getWindow();
        window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
        int statusBarHeight = rectangle.top;
        return statusBarHeight != 0;
    }