根据显示的片段,从工具栏添加和删除视图

时间:2015-10-19 16:31:11

标签: android android-fragments android-toolbar

我有一个应用程序,目前只有2个片段。片段1,这有导航抽屉和标题。

片段2需要自定义视图,因为添加菜单项将无法正常工作,因为我需要对齐。所以我将视图添加如下:

 ActionBar.LayoutParams params = new ActionBar.LayoutParams(
            ActionBar.LayoutParams.MATCH_PARENT,
            ActionBar.LayoutParams.MATCH_PARENT,
            Gravity.LEFT);

    //Remove nav drawer "hamburger"
    mMainActivity.mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);

    //Remove title from Toolbar
    bar.setDisplayShowTitleEnabled(false);

    LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
       View postToolBar = layoutInflater.inflate(R.layout.upload_content_toolbar, null);

    mMainActivity.mToolBar.addView(postToolBar, params);

没关系,它显示正确。但是,当我想返回前一个片段Fragment 1时,我会调用mMainActivity.mToolBar.removeView(postToolBar);我在返回片段1时调用它,因为用户可以通过后退按钮或postToolBar中的按钮导航。但是,观点仍然存在。我无法摆脱它。我现在尝试将可见性设置为GONE,但这也不起作用。

使用Action Bar非常简单,但是工具栏似乎有些复杂。

我必须在我的两个片段中添加它,我扩展了一个BaseFragment,我在其中声明了工具栏视图。

任何人都可以帮助或向我发送教程吗?

1 个答案:

答案 0 :(得分:0)

这就是我此时的成就:

在活动onCreateView();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowCustomEnabled(true); // enable overriding the default toolbar_home layout
    getSupportActionBar().setDisplayShowTitleEnabled(false); // disable the default title element here (for centered title)
    getSupportActionBar().setDisplayShowHomeEnabled(false);
            cutomToolbarView=getLayoutInflater().inflate(R.layout.custom_toolbar_home, null);
    getSupportActionBar().setCustomView(cutomToolbarView);

    }

这是做魔术的两种简单方法

public void setToolbarTitleEnabled(String title) {
    getSupportActionBar().setDisplayShowCustomEnabled(false);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
    getSupportActionBar().setTitle(title);
}

public void setCustomToolbarEnabled() {
    getSupportActionBar().setDisplayShowCustomEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
}

然后只需更改动作栏就可以了:

何时选择HomeFragment.java或其他任何案例

setToolbarTitleEnabled(CURRENT_TAG);

以及何时选择其他片段:

setCustomToolbarEnabled();