Toolbar的由来:
由于Android的原生控件给用户带来的UI体验并不是非常完美的,这个其实就是与IOS对比的结果。所以Google的工程师就开发一系列的优美的控件效果Material Design。Toolbar就是其中的一个。
Toobar的使用
1.隐藏原生的ActionBar
每当我们去新建一个APP项目的时候,系统都会给我们一个原生的标题栏。这个原生的标题栏是一个ActionBar。不过由于ActionBar的设计原因,它只能被用于活动的顶部。所以官方不再推荐使用ActionBar,而是使用Toolbar去替代它。既然不用它了我们就要把它隐藏。修改它你要先打开项目下res/values/styles.xml文件。修改它
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
使用不带ActionBar的主题有两种:
淡色主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
深色主题:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
2.添加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"
android:text="@string/app_name"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"></android.support.v7.widget.Toolbar>
3.去活动中获取你的Toolbar控件
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
4.美化你的Toolbar
(1)在res文件下创建menu菜单添加布局文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/backup"
android:icon="@drawable/ic_backup_black_24dp"
android:title="Backup"
<!--选项总是显示-->
app:showAsAction="always"/>
<item
android:id="@+id/delete"
android:icon="@drawable/ic_delete_black_24dp"
android:title="Delete"
<!--如果Toolbar上有控件就放上去,放不上去就放在扩张菜单-->
app:showAsAction="ifRoom"/>
<item
android:id="@+id/setting"
android:title="Setting"
<!--将选项放在扩展菜单里-->
app:showAsAction="never"/>
</menu>
(2)加载菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar,menu);
return true;
}
(3)为选项添加点击监听事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.backup:
Toast.makeText(this,"你点击了",Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
Toast.makeText(this,"你点击了",Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this,"你点击了",Toast.LENGTH_SHORT).show();
break;
case android.R.id.home:
drawerLayout_setting.openDrawer(Gravity.START);
break;
}
return true;
}