在 Android 5.0 开始推出一个 Material Design 风格的导航Toolbar 控件。由于Toolbar的可定制度高,所以已经逐步替代掉了ActionBar。可以自定义以下几种元素,实现不同风格的Toolbar:
1.设置导航栏图标
toolbar.setNavigationIcon(R.drawable.back);
2.设置App的logo
toolbar.setLogo(R.mipmap.ic_launcher);
3.支持设置标题和子标题
toolbar.setTitle("大标题");
toolbar.setSubtitle("子标题");
4.支持添加一个或多个的自定义控件
5.支持Action Menu
在style文件上添加
法1:然后再在布局文件中添加上
app:titleTextAppearance="@style/Toolbar.TitleText"
法2:然后再在代码中设置
toolbar.setTitleTextAppearance(this, R.style.Toolbar_TitleText);
法1:然后再在布局文件中添加上
app:subtitleTextAppearance="@style/Toolbar.SubTitleText"
法2:然后再在代码中设置
toolbar.setSubtitleTextAppearance(this,R.style.Toolbar_SubTitleText);
然后再在布局文件中添加上
app:theme="@style/ToolbarTheme"
1)在根布局中添加
xmlns:app="http://schemas.android.com/apk/res-auto"
2)在布局中设置大标题和二级标题正确方法是
app:title="大标题"
app:subtitle="子标题"
而设置以下的方法是没有作用的
android:title="大标题"
android:subtitle="子标题"
3)上边ToolBar Menu的style中item actionMenuTextColor
前边是不能加android:
的,加上之后没作用!
4)在使用Toolbar之前一定要去掉系统自带的ActionBar,可以给Activity使用NoActionBar主题,或者在setContentView()之前调用supportRequestWindowFeature(Window.FEATURE_NO_TITLE)(或者是requestWindowFeature(Window.FEATURE_NO_TITLE))。
5)若在代码中设置logo。大标题和子标题都要在setSupportActionBar(toolbar)前执行
在代码中重写onCreateOptionsMenu方法
/**
* 该方法是用来加载菜单布局的
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
菜单的点击事件
private static Toolbar.OnMenuItemClickListener onMenuItemClickListener=new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.action_search://因为使用android.support.v7.widget.SearchView类,可以在
break;
case R.id.action_share:
break;
case R.id.action_more:
break;
}
return true;
}
};
这个属性的值有:
1、always:使菜单项一直显示在ToolBar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在ToolBar上。
3、never:使菜单项永远都不出现在ToolBar上,在…的子项中显示。
4、withText:使菜单项和它的图标,菜单文本一起显示。