一.概述
Google在Android5.0以后推出了一个Toolbar来完全代替之前的Actionbar,Toolbar的出现解决了Actionbar的各种限制,Toolbar可以完全自定义和配置。先来看看ToolBar的默认样式:
左边是应用的名称,右边是一个菜单。
二.使用
先看布局文件:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
请使用v7中的ToolBar,不然只有Android 5.0以后才能使用。
代码:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
声明后,再用 setSupportActionBar 设定,Toolbar即能取代原本的 actionbar 了
三.更改ToolBar的样式
1.先看基本的,改变背景颜色以及文字颜色
代码如下:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#7700ff00"
android:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay" />
修改ToolBar的背景颜色:
android:background="#7700ff00"
修改字体颜色:
android:theme="@style/AppTheme.AppBarOverlay"
修改菜单弹出窗口样式:
//菜单窗口为白色,不设置就为黑色
app:popupTheme="@style/AppTheme.PopupOverlay"
2.添加控件
先看效果图:
先看菜单以外的部分,
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//标题
toolbar.setTitle("天气很好");
//子标题
toolbar.setSubtitle("是的");
//图标
toolbar.setLogo(R.mipmap.ic_launcher);
setSupportActionBar(toolbar);
//导航图标,要放到setSupportActionBar之后
toolbar.setNavigationIcon(R.drawable.aa);
菜单部分需要在menu的布局文件中设置:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_edit"
android:title="编辑"
android:orderInCategory="80"
android:icon="@drawable/ee"
app:showAsAction="ifRoom" />
<item android:id="@+id/action_share"
android:title="分享"
android:orderInCategory="90"
android:icon="@drawable/ss"
app:showAsAction="ifRoom" />
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
</menu>
android:orderInCategory代表次序,数字越小越排在前面。
app:showAsAction指定是否显示在菜单里面
never:永远不会显示。只会在溢出列表中显示。
ifRoom:会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。
然后我们给这几个菜单添加点击事件:
首先让当前Activity实现Toolbar.OnMenuItemClickListener接口,然后
重写对应的方法:
@Override
public boolean onMenuItemClick(MenuItem item) {
String msg = "";
switch (item.getItemId()){
case R.id.action_edit:
msg+="edit";
break;
case R.id.action_share:
msg+="share";
break;
case R.id.action_settings:
msg+="setting";
break;
}
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
return false;
}
最后别忘了添加
toolbar.setOnMenuItemClickListener(this);
这样就实现了菜单按钮的监听。