ToolBar的使用

项目中要使用到ToolBar,所以把用到的知识总结一下:
1.首先要在styles.xml中设置noActionBar




2.在布局中添加v7包下的ToolBar,通常做法是额外写一个布局,利用include:layout的方法添加到自己的布局中,因为ToolBar会在一个项目中多次用到:



其中android:fitsSystemWindows="true"作用是避免ToolBar和系统状态栏发生重合。

3.在Activity中的引用与设置相关属性
a.先加载menu布局

/** * 为toolBar设置menu
* @param menu
* @return
*/@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.toolbar_item,menu);
    return super.onCreateOptionsMenu(menu);
}

b.在代码中初始化ToolBar

Toolbar toolbar = (Toolbar)findViewById(R.id.id_toolBar);
setSupportActionBar(toolbar);

其中setSupportActionBar(toolbar);这句代码就是用ToolBar代替ActionBar

c.为ToolBar的menu item设置点击事件

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener()
{    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()){
            case R.id.toolbar_add:
                break;
        }
    return false;
    }
});

其中case 中的id为menu.xml中设置的id

3.到这里一个基本的ToolBar就已经加载到app中了,当然还有一些比较常用的属性来美化ToolBar:(注意,前提是已经写了setSupportActionBar(toolbar);这句代码,不然会无效果)。

toolbar.setTitle("主标题");//设置主标题
toolbar.setSubtitle("副标题");//设置副标题
toolbar.setLogo(R.drawable.ic_launcher);//设置LOGO

4.为ToolBar主标题左边添加一个icon,并添加点击事件

toolbar.setNavigationIcon(R.drawable.click_menu);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

5.当然还有一个最重要的知识点我觉得就是可以动态改变menu的item,下面上代码:

/** * 重写该方法在不同页面可以刷新不同的menu_item
* 要手动调用invalidateOptionsMenu()方法去刷新
* @param menu
* @return
*/@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    switch (type){
        case Contraint.DISTRIBUTOR_TYPE:
        menu.findItem(R.id.toolbar_add).setVisible(true);
    break;
        case Contraint.ANIMAL_TOTAL_TYPE:
        menu.findItem(R.id.toolbar_add).setVisible(true);
    break;
        case Contraint.QUALITY_STATICS_TOTAL_TYPE:
        menu.findItem(R.id.toolbar_add).setVisible(true);
    break;
        case Contraint.DEAD_STATICS_TOTAL_TYPE:
        menu.findItem(R.id.toolbar_add).setVisible(false);
    break;
    }
    return super.onPrepareOptionsMenu(menu);
}

当然,这里只是重写了各种情况下item的显示状态,还要在自己更改各种情况的时候手动调用invalidateOptionsMenu()去刷新menu item的显示。

你可能感兴趣的:(ToolBar的使用)