#Material Design之Toolbar使用

1.简介

  • 简单点可以理解为替代原来的ActionBar就行了


    #Material Design之Toolbar使用_第1张图片
    Paste_Image.png

    一个Toolbar从左到右包括了一个navigation button、一个logo、一个title和subtitle、一个或多个自定义的View和一个action menu这五部分。只有设置相应的内容才行,否则不会显示。


    #Material Design之Toolbar使用_第2张图片
    Paste_Image.png

2.Toolbar的使用

注意:开头是自定义命名空间xmlns:toolbar="http://schemas.android.com/apk/res-auto

  • toolbar:navigationIcon 设置navigation button的图标
  • toolbar:logo 设置logo
  • toolbar:title 设置标题
  • toolbar:titleTextColor 设置标题文字颜色
  • toolbar:subtitle 设置副标题
  • toolbar subtitleTextColor 设置副标题文字颜色
  • toolbar:popupTheme 应用一个主题用来控制toolbar的ui弹窗
  • toolbar:title TextAppearance 设置title text 相关属性,如:字体,颜色,大小等等
  • toolbar:subtitle TextAppearance
  • toolbar:logoDescription logo描述
  • anderoid:background toolbar背景
  • android:theme 主题
//设置NavigationIcon
        toolbar.setNavigationIcon(R.drawable.ic_book_list);
        // 设置navigation button 点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        // 设置 toolbar 背景色
        toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
        // 设置 Title
        toolbar.setTitle(R.string.toolbar_title);
        //  设置Toolbar title文字颜色
        toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        // 设置Toolbar subTitle
        toolbar.setSubtitle(R.string.sub_title);

        toolbar.setSubtitleTextColor(getResources().getColor(R.color.white));
        // 设置logo
        toolbar.setLogo(R.mipmap.ic_launcher);
        // 设置 NavigationIcon 点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        //设置 Toolbar menu
        toolbar.inflateMenu(R.menu.setting_menu);
        // 设置溢出菜单的图标
        toolbar.setOverflowIcon(getResources().getDrawable(R.drawable.abc_ic_menu_moreoverflow_mtrl_alpha));
        // 设置menu item 点击事件
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.item_setting:
                        //点击设置
                        break;
                }
                return false;
            }
        });

如何为一个Activity添加一个ToolBar
1.gradle中添加V7 appCompat
2.确保Activity集成AppCompatActivity
3.在功能清单文件中设置(也可以在activity的节点下设置)

4.添加


  

5.Actiavity中对toolbar做相关操作

private void initToolbar(){
       Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar_2);
       toolbar.setNavigationOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               finish();
           }
       });
       //添加溢出菜单
       toolbar.inflateMenu(R.menu.setting_menu);
       // 添加菜单点击事件
       toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
           @Override
           public boolean onMenuItemClick(MenuItem item) {
               switch (item.getItemId()){
                   case R.id.item_setting:
                       //点击设置菜单
                       break;
               }
               return false;
           }
       }); 

    }

溢出菜单如下



    

   
    

app:showAsAction属性值介绍

  • ifRoom:有显示空间就显示,没有就在溢出菜单中显示
  • never:总是在溢出菜单中
  • always:总是显示在ToolBar上。

3.特殊需求

  • 修改溢出菜单文字的大小和颜色



  • Toolbar设置自定义View

      
      
  

在代码中得到控件

private void initToolbar(){
        mToolbar3 = (Toolbar) findViewById(R.id.tool_bar_4);
        mToolbar3.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        mToolbar3.inflateMenu(R.menu.menu_search);

        mToolbar3.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                if(item.getItemId() == R.id.item_search){
                    // do search 
                }
                return false;
            }
        });
        // 获取ToolBar 上的编辑框
        EditText searchEdit = (EditText) mToolbar3.findViewById(R.id.edit_search);
        // 获取内容
        String content = searchEdit.getText().toString();
    }

你可能感兴趣的:(#Material Design之Toolbar使用)