弹出菜单退出沉浸模式

时间:2018-08-06 16:52:52

标签: android

我已经将应用程序设置为使用“沉浸式粘滞模式”,但是我还使用了“活动”上下文上方的一些元素,并且当用户与它们交互时,应用程序退出“沉浸式模式”并再次显示状态栏。这些元素是一个对话框和工具栏的弹出菜单。当我通过showDialog方法中的以下代码调用对话框时,可以防止状态栏出现:

dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

但是,我无法通过弹出菜单执行相同的操作。这些是创建和选择菜单的方法:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_view, menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int choosenId = item.getItemId();

    switch (choosenId){
        case R.id.btn1:
            lblTitle.setText(R.string.btn1);

        break;
        case R.id.btn2:
            lblTitle.setText(R.string.btn2);

        break;
        case R.id.btn3:
            lblTitle.setText(R.string.btn3);

        break;
        case R.id.btn4:
            lblTitle.setText(R.string.btn4);

        break;
    }
    return super.onOptionsItemSelected(item);
}

这是我的工具栏的xml:

   <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorBackgroundDarker"
        app:layout_collapseMode="pin"
        app:popupTheme="@style/AppTheme.PopupOverlay">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="?attr/actionBarSize">

            <Button android:id="@+id/btnBack"
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:layout_centerVertical="true"
                android:background="@mipmap/button_back_orange" />
        </RelativeLayout>

        <TextView android:id="@+id/lblTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/title"
            android:textSize="22sp"
            android:textColor="@color/white"
            style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
            android:layout_gravity="center"/>

    </android.support.v7.widget.Toolbar>

OBS:我已经在“活动”中使用了以下代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tutorial);

    View decorView = getWindow().getDecorView();

    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}

public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    View decorView = getWindow().getDecorView();
    if (hasFocus) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            decorView.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_IMMERSIVE_STICKY);
        }else{
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
    }
}

0 个答案:

没有答案