Design Support库对Materral Design中最具代表的控件和效果进行了封装。
Toolbar不仅继承了ActionBar(只能位于活动的顶部的控件)而且灵活性很高,可以配合其他的控件完成Material Design的效果。
由于每个应用都是默认内置了Actionbar的,那么他是从何而来?
他是通过项目中的主题来显示的
为了将Toolbar来替换掉ActionBar,需要定义一个不带ActionBar的主题。
有如下两种:
Theme.AppCompat.Light.NoActionBar
Theme.AppCompat.NoActionBar
下图是两种主题的样式对比
加入库
compile 'com.android.support:design:22.2.0'
在creat方法中添加即可得到一个Toolbar
/**添加ToolBar*/
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
为Toolbar添加按钮实现如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/backup"
android:icon="@drawable/ic_backup"
android:title="Backup"
app:showAsAction="always"/>
<item
android:id="@+id/delete"
android:icon="@drawable/ic_delete"
android:title="Delete"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/settings"
android:icon="@drawable/ic_settings"
android:title="Settings"
app:showAsAction="never"/>
</menu>
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
break;
case R.id.backup:
Toast.makeText(this, "You clicked Backup", Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
Toast.makeText(this, "You clicked Delete", Toast.LENGTH_SHORT).show();
break;
case R.id.settings:
Toast.makeText(this, "You clicked Settings", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
如图所示: