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; }