为什么片段无法隐藏底栏

时间:2014-04-22 10:11:23

标签: android fragment navigationbar

为什么片段无法隐藏底栏

但是活动可以隐藏顶部和底部

使用以下代码:

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);     
getActionBar().hide();

片段方面不起作用

我尝试回答1 但它仍然无效 当我触摸片段区域时 它将显示顶部和底部,让我困惑很多

以下是我的代码: (片段方面)

@Override
public void onCreate(Bundle savedInstanceState) 
{

  View decorView = getActivity().getWindow().getDecorView();
  int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN;
  decorView.setSystemUiVisibility(uiOptions);    
  getActivity().getActionBar().hide();
} 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
{
   View rootView = inflater.inflate(R.layout.fragment_ge, container, false);
   return rootView;
}

2 个答案:

答案 0 :(得分:1)

当然你可以隐藏底部的导航栏。 这是我片段中的回收者滚动侦听器。 blogWriteBtn是我的Floatingactionbutton,不用担心。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 0 && blogWriteBtn.getVisibility() == View.VISIBLE) {
                blogWriteBtn.hide();
                ((MainActivity)getActivity()).SetNavigationVisibiltity(false);
            } else if (dy < 0 && blogWriteBtn.getVisibility() != View.VISIBLE) {
                blogWriteBtn.show();
                ((MainActivity)getActivity()).SetNavigationVisibiltity(true);
            }
        }
    });

并在我的MainActivity中有底部导航栏。我添加了这种方法..

public void SetNavigationVisibiltity (boolean b) {
    if (b) {
        bottomNavigationView.setVisibility(View.VISIBLE);
    } else {
        bottomNavigationView.setVisibility(View.GONE);
    }
}

它对我来说非常好。在这里,我们调用SetNavigationVisibilty(boolean)的公共方法MainActivity。我们可以这样做。

答案 1 :(得分:0)

Chuang,尝试使用View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY而不是您使用的其他两个标志。这是根据我的知识在API 19中引入的,并且要求您使最低SDK版本相同。