在运行时更改工具栏颜色、高度和视图



我有一个带有导航视图和工具栏的活动应用程序。当用户从导航视图中选择选项时,我想改变工具栏高度(从标准56dp到"扩展"-> 128dp https://www.google.com/design/spec/layout/structure.html#structure-app-bar),而我不改变活动,只替换碎片。那么最好的解决方案是什么呢?在工具栏类和动作栏中没有设置layout_height的方法。

第二个问题:我想把颜色从白色改为深色?我必须实例新的工具栏,并使用setSupportActionBar方法设置它,因为我不能在运行时为工具栏设置主题?现在我再次调用setSupportActionBar,但这个好的解决方案?

代码:

@SuppressWarnings("ConstantConditions")
private void initToolbar() {
    mToolbar = (Toolbar) findViewById(R.id.toolbar_default);
    setDefaultToolbar();
    mDrawerToggler = new ActionBarDrawerToggle(this, mDrawer, R.string.navigation_view_open, R.string. navigation_view_close);
    mDrawer.setDrawerListener(mDrawerToggler);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    mDrawerToggler.syncState();
    ImageView searchImageView = (ImageView) findViewById(R.id.toolbar_image_view_search);
    searchImageView.setOnClickListener(this);
}
@SuppressWarnings("ConstantConditions")
public void setDefaultToolbar() {
    mToolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
    mToolbar.setTitleTextColor(Color.argb(0, 255, 255, 255));
    mToolbar.setTitle(R.string.app_name);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setTitle(getString(R.string.app_name));
}
@SuppressWarnings("ConstantConditions")
public void extendToolbar() {
    mToolbar.setBackgroundColor(getResources().getColor(R.color.toolbarCollapseBackground));
    mToolbar.setTitleTextColor(Color.argb(0, 0, 0, 0));
    //How extend toolbar from 56dp to 128dp here ? I see that is getHeight() method but setHeight() is not avaible ? Using setLayoutParams to set height 128dp ? How ?
    mToolbar.
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(false);
}

我使用:

mToolbar.getLayoutParams().height = (int) (int) getResources().getDimension(R.dimen.layout_height_toolbar_extend);

and I my dimensions .xml:

<dimen name="layout_height_toolbar_extend">128dp</dimen>

最新更新