使用WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY覆盖ActionBar

时间:2015-03-29 00:56:22

标签: android android-actionbar android-windowmanager

我的问题是关于android 4.0 +

我通过2个步骤完成了pernament的活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WindowManager wm = (WindowManager) getApplicationContext().getSystemService(
            Context.WINDOW_SERVICE);
    getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
    getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

@Override
public void onResume() {
    super.onResume();
    View decorView = getWindow().getDecorView();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
    decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LOW_PROFILE);

它在所有android 4.0+中工作正常,我也可以在布局中创建任何视图(例如按钮),可以点击

WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
    params.format = PixelFormat.RGBA_8888; 
    params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
            | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    params.width = 600;
    params.height = 200;

    wm.addView(exitButton, params)

在我得到的其他点击事件中 - 删除事件,因为没有可触摸的窗口,它很棒,但我需要在ActionBar中使用按钮。

有没有办法用WindowManager或其他解决方案做到m.b?

P.S。

this.requestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);
this.requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

不起作用,主题也没有影响。

1 个答案:

答案 0 :(得分:0)

您是否尝试使用<item name="android:windowActionBarOverlay">true</item>覆盖它?

来自doc:

  

要为操作栏启用叠加模式,您需要创建一个扩展现有操作栏主题的自定义主题,并将android:windowActionBarOverlay属性设置为true

有关此属性的详细信息,请阅读有关Overlaying the Action Bar

的文档