隐藏/显示片段中的操作栏

时间:2016-06-29 19:13:03

标签: java android android-fragments android-runonuithread

MainActivity延伸AppCompatActivity。在那3个可以通过滑动手势改变的片段中。我想删除中间的操作栏。当用户在第一个或第三个片段中滑动时,再次添加操作栏。

我的代码如下:

@Override
public void setMenuVisibility(boolean menuVisible) {
    super.setMenuVisibility(menuVisible);
    if(menuVisible && getActivity()!=null){
        getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}

@Override
public void setMenuVisibility(boolean menuVisible) {
    super.setMenuVisibility(menuVisible);
    if(menuVisible){
        getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}

但是,它给了我以下警告:

  

跳过45帧!应用程序可能在其主线程上做了太多工作。

我试着把它放进去:

getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
         // hide / show action bar...
    }
});

应用程序滞后。我怎样才能让它顺利?

1 个答案:

答案 0 :(得分:0)

在中间Fragment

AppCompatActivity activity = (AppCompatActivity) getActivity(); if (activity != null) { activity.getSupportActionBar().hide(); } 回调中添加以下代码段
onResume

并在其他两个Fragment的{​​{1}}回调中添加

AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
    activity.getSupportActionBar().show();
}