很久以前学了Toolbar,当初没做笔记,今天用的时候居然发现不会用了, 无奈只好重新学了一遍,顺便记录下.
使用toolbar,自然需要隐藏原来的ActionBar,values/styles.xml中做出如下修改:
我们把toolbar的布局抽出来,include一下,可以方便复用
activity_main.xml
toolbar.xml布局
这里说明一下几个属性设置的意思:
下拉菜单遮挡覆盖在toolbar上面,修改如下配置
colors.xml
#3F51B5
#303F9F
#FF4081
#FFFFFF
#181a29
#2d2929
看看MainActivity里面的代码,注释都有.
private Toolbar toolbar;
private void initView() {
toolbar = (Toolbar) findViewById(R.id.my_toolbar);
//添加title、subtitle、logo、导航栏图标
toolbar.setLogo(R.drawable.ic_launcher);
toolbar.setTitle("Title");
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitle("Subtitle");
toolbar.setSubtitleTextColor(Color.parseColor("#FFFFFF"));
//别忘了
setSupportActionBar(toolbar);
// 注意:设置导航栏图标 要设定在setSupoortActionBar之后
toolbar.setNavigationIcon(R.drawable.icon_pic_list_type);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "NavigationIcon", Toast.LENGTH_SHORT).show();
}
});
}
首先我们需要在res下创建一个名字为menu的文件,在menu中创建menu_main.xml.
res/menu/menu_main.xml:
menu菜单创建好后,在MainActivity中重写onCreateOptionsMenu()方法,把这个菜单加载进去:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
MainActivityonCreate()方法中设置toolBar的MenuItem点击事件
//设置toolBar上的MenuItem点击事件
toolbar.setOnMenuItemClickListener(listener);
private final Toolbar.OnMenuItemClickListener listener = new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
Toast.makeText(MainActivity.this, "searach!!!", Toast.LENGTH_SHORT).show();
break;
case R.id.action_share:
Toast.makeText(MainActivity.this, "share!!!!", Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings:
//Toast.makeText(MainActivity.this, "设置", Toast.LENGTH_SHORT).show();
//弹出自定义popWindow
//popUpMyOverflow();
break;
case R.id.action_login:
Toast.makeText(MainActivity.this, "登录", Toast.LENGTH_SHORT).show();
break;
case R.id.action_regis:
Toast.makeText(MainActivity.this, "注册", Toast.LENGTH_SHORT).show();
break;
case R.id.action_help:
Toast.makeText(MainActivity.this, "帮助", Toast.LENGTH_SHORT).show();
break;
case R.id.action_pep:
Toast.makeText(MainActivity.this, "个人", Toast.LENGTH_SHORT).show();
break;
case R.id.action_zx:
Toast.makeText(MainActivity.this, "中心", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
};
ok自己运行一下看效果.
最后附上demo github地址:https://github.com/787060894/ToolbarDemo