代码之家  ›  专栏  ›  技术社区  ›  notGeek

根据可见片段处理活动工具栏可见性

  •  0
  • notGeek  · 技术社区  · 7 年前

    在我的android应用程序中,我有一个活动和许多片段。但是,我只想为一些片段显示工具栏,对于其他片段,我希望片段是全屏的。最好的推荐方法是什么(根据可见片段显示和隐藏活动工具栏)?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Man    7 年前

    我更喜欢使用这个接口。

    public interface ActionbarHost {
        void showToolbar(boolean showToolbar);
    }
    

    使您的活动得以实施 ActionbarHost

    @Override
    public void showToolbar(boolean showToolbar) {
        if (getSupportActionBar() != null) {
            if (showToolbar) {
                getSupportActionBar().show();
            } else {
                getSupportActionBar().hide();
            }
        }
    }
    

    现在从你的片段初始化 onAttach()

    private ActionbarHost actionbarHost;
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof ActionbarHost) {
            actionbarHost = (ActionbarHost) context;
        }
    }
    

    现在,如果你想隐藏动作栏调用 actionbarHost.showToolbar(false); 从碎片。

    if (actionbarHost != null) {
                actionbarHost.showToolbar(false);
            }
    

    我还建议你再看一遍 onDetach()

    @Override
    public void onDetach() {
        super.onDetach();
        if (actionbarHost != null) {
            actionbarHost.showToolbar(true);
        }
    }
    
        2
  •  0
  •   Joaquim Ley    7 年前

    因为您需要不同的表示,所以每个片段都应该(当您需要时)有自己的表示 toolbar .

    因此你 Activity 的布局将有一个简单的fragment\u容器。

        3
  •  0
  •   End User    7 年前

    如果您使用的是viewPager,那么您可以只使用MainActivity中的一个工具栏来执行此操作

     pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
            }
    
            @Override
            public void onPageSelected(int position) {
    
                  if(position==YourFragmentPosition)
                            {
                         toolbar.setVisibility(View.VISIBLE);
                               }
                      else{
                          toolbar.setVisibility(View.GONE);
                         }
                }
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
        });