全屏透明活动(无标题和状态栏)不起作用....为啥?

Posted

技术标签:

【中文标题】全屏透明活动(无标题和状态栏)不起作用....为啥?【英文标题】:Full screen transparent activity (no title & status bar) doesn't work.... why?全屏透明活动(无标题和状态栏)不起作用....为什么? 【发布时间】:2012-01-27 06:13:13 【问题描述】:

我正在制作自定义锁屏。

锁屏是我在屏幕关闭时启动的活动。

但是,我不能让活动既透明又全屏。

状态栏一直显示。

这是我在清单中所做的:

<activity android:name=".activities.LockScreenActivity"  android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

我还在 activit 的 onCreate 中添加了这些附加功能:

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.lock_screen);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

但它似乎无法工作:|

为什么?

【问题讨论】:

【参考方案1】:

从 onCreate() 中删除代码。在 Manifestfile 中使用它。

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

否则根据您的要求创建主题。

【讨论】:

不起作用我的朋友.. 这与 ? 最好使用半透明和nototlebar。 我不确定我是否关注你。正如我所说,我在清单中写了 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 你告诉我在 onCreate 中使用它: setTheme(android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); .如果我错了,请纠正我,但这不是一回事吗? 两者都是一样的,它对我有用,删除onCreate中的东西。仅用于设置任一清单。 很奇怪。我无法让它工作。当我使用“Theme.NoTitleBar.Fullscreen”时,状态栏消失了。但是当我使用“Theme.Translucent.NoTitleBar.Fullscreen”时,状态栏仍然存在。您可以发布代码或添加对您有用的项目吗?谢谢【参考方案2】:

您需要在 setContentView 之前设置标志,然后它应该可以正常工作

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.lock_screen);

【讨论】:

【参考方案3】:

这里是link(在 Android 4.1 及更高版本上隐藏状态栏)。

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();

在 Android 4.0 及更低版本上隐藏状态栏:

<application
    ...
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
    ...
</application>

@Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar.
        if (Build.VERSION.SDK_INT < 16) 
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        
        setContentView(R.layout.activity_main);
    

【讨论】:

以上是关于全屏透明活动(无标题和状态栏)不起作用....为啥?的主要内容,如果未能解决你的问题,请参考以下文章

带有透明状态栏的全屏片段(以编程方式)

全屏无导航和状态栏

导航抽屉在状态栏上半透明不起作用

状态栏透明度不起作用

引导导航栏活动状态不起作用

带有半透明状态栏的全屏 DialogFragment