Android Toolbar 总结

ToolBar介绍

ToolBar是Android5.0引入,可使用support v7兼容包开发。Android开发中逐渐使用ToolBar替换掉ActionBar。

ToolBar常用设置项

  • toolbar:navigationIcon
    左侧图标,默认是一个Back箭头
  • toolbar:logo
    app图标,展示位置和navigationIcon差不多,一般用navigationIcon
  • toolbar:subtitle
    副标题
  • toolbar:title
    标题

注:命名空间一定要用toolbar,不要用android命名空间。sdk bug,用android命名空间,设置不生效。

项目开发

由于项目开发过程中,对toolbar的自定义程度比较高,所有没有采用toolbar自带的几个属性,而是采用在xml文件ToolBar标签包裹自定义布局的方式引入。
1)在layout布局文件中引入ToolBar




    
        
    

    


代码中,Toolbar标签内包裹了实际的布局文件,此处使用include标签,保证代码的整洁性。
toolbar_web.xml:



    
        
        
    
    
        
    

项目中以toolbar_xxx.xml的命名方法统一定义toolbar内部的布局文件,布局文件内部toolbar_back,toolbar_title采用统一的命名方法,以便于项目管理。

layout目录下部分toolbar布局文件

2)代码中使用ToolBar

  • 在BaseActivity中用toolbar替换默认的actionbar
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int layoutId = getLayoutId();
        if (layoutId != -1) {
            setContentView(layoutId);
        }
        Injector.inject(this,this);
    
        mContext = this;
    
        readIntent();
    
        if (findViewById(R.id.toolbar) != null){
            toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(false);
            getSupportActionBar().setDisplayShowTitleEnabled(false);
        }
    
        initControls(savedInstanceState);
        setListeners();
        overridePendingTransition(R.anim.left_in, R.anim.hold);
    
    }
    

这里必须要设置setDisplayHomeAsUpEnabled为false,否则就算没有设置navigationIcon,也会莫名其妙的出现默认的Icon~~

2)在实际的activity中,找到对应的View实例

Android Toolbar 总结_第1张图片
activity中绑定对应的view

3)ToolBar相关view的响应事件

@Override
  protected void setListeners() {
      toolbarBack.setOnClickListener(this);
      toolbarSend.setOnClickListener(this);
      listView.setOnItemClickListener(itemClickListener);
  }
 @Override
   public void onClick(View v) {
       switch (v.getId()){
           case R.id.toolbar_back:
               finish();
               break;
           case R.id.toolbar_send:
               int position = listView.getCheckedItemPosition();
               if(position < 0){
                   ToastUtils.showToast("请选择一个分数");
                   return;
               }
               break;
       }
   }

你可能感兴趣的:(Android Toolbar 总结)