在 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
一、修改ToolBar的标题、子标题字体大小和颜色,toolbar menu字体的大小和颜色
1)、修改ToolBar的标题的字体颜色大小
在style文件上添加
<!-- 设置Toolbar标题字体的颜色大小 --><style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"><item name="android:textSize">20sp</item><!--toolbar标题字体大小--><item name="android:textColor">#ffffff</item><!--toolbar标题字体颜色--></style>
法1:然后再在布局文件中添加上
app:titleTextAppearance="@style/Toolbar.TitleText"
法2:然后再在代码中设置
toolbar.setTitleTextAppearance(this, R.style.Toolbar_TitleText);
2)、修改ToolBar的子标题的字体颜色大小
<!-- 设置Toolbar 子标题subtitle标题字体的大小 --><style name="Toolbar.SubTitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"><item name="android:textSize">15sp</item><!--子标题字体大小--><item name="android:textColor">#ffffff</item><!--子标题字体颜色--></style>
法1:然后再在布局文件中添加上
app:subtitleTextAppearance="@style/Toolbar.SubTitleText"
法2:然后再在代码中设置
toolbar.setSubtitleTextAppearance(this,R.style.Toolbar_SubTitleText);
3)、修改ToolBar Menu的字体颜色大小
<!--toolbat mean的字体颜色和大小--><style name="ToolbarTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="actionMenuTextColor">#ffffff</item> <!--menu字体颜色--><item name="android:textSize">18sp</item> <!--menu字体大小--></style>
然后再在布局文件中添加上
app:theme="@style/ToolbarTheme"
二、注意事项:
1)在根布局中添加
xmlns:app="/apk/res-auto"
2)在布局中设置大标题和二级标题正确方法是
app:title="大标题"app:subtitle="子标题"
而设置以下的方法是没有作用的
android:title="大标题"android:subtitle="子标题"
3)上边ToolBar Menu的style中itemactionMenuTextColor
前边是不能加android:
的,加上之后没作用!
4)在使用Toolbar之前一定要去掉系统自带的ActionBar,可以给Activity使用NoActionBar主题,或者在setContentView()之前调用supportRequestWindowFeature(Window.FEATURE_NO_TITLE)(或者是requestWindowFeature(Window.FEATURE_NO_TITLE))。
5)若在代码中设置logo。大标题和子标题都要在setSupportActionBar(toolbar)前执行
三、ToolBar menu的使用
在代码中重写onCreateOptionsMenu方法
/*** 该方法是用来加载菜单布局的* @param menu* @return*/@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);return true;}
菜单的点击事件
private static Toolbar.OnMenuItemClickListener onMenuItemClickListener=new Toolbar.OnMenuItemClickListener() {@Overridepublic 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;}};
四、toolbar menu中app:showAsAction各个属性值作用
这个属性的值有:
1、always:使菜单项一直显示在ToolBar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在ToolBar上。
3、never:使菜单项永远都不出现在ToolBar上,在…的子项中显示。
4、withText:使菜单项和它的图标,菜单文本一起显示。