它用來代替ActionBar,但是比ActionBar更加靈活,相當(dāng)于可以寫在布局文件中的ActionBar;與DrawerLayout的使用的時(shí)候,DrawerLayout可以覆蓋在ToolBar上,并且ToolBar和ActionBar不能同時(shí)使用
使用
隱藏actionbar
//先隱藏ActionBar,可以繼承一個(gè)不帶ActionBar的Theme,如:
style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"
布局文件中引用
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:title="@string/app_name" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#FFF"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我不是SlideMenu"
android:textColor="@color/colorPrimary"
android:textSize="30sp" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
ToolBar替代ActionBar--在Activity中設(shè)置
/**
* 設(shè)置toolbar
*/
private void setToolbar() {
//替代actionbar
setSupportActionBar(toolbar);
//獲取actionbar對(duì)象
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("應(yīng)用詳情");
//設(shè)置ActionBar的home按鈕可用---啟用actionbar的home按鈕可用
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
toolBar.setTitle("ToolBar");//設(shè)置標(biāo)題
toolBar.setNavigationIcon(iconRes);//設(shè)置圖標(biāo)
toolBar.setOnMenuItemClickListener();//設(shè)置Menu Item點(diǎn)擊
設(shè)置actionbar的home按鈕的點(diǎn)擊事件
@Override
public boolean onOptionsItemSelected (MenuItem item){
if (item.getItemId() == android.R.id.home) {
//如果當(dāng)前點(diǎn)擊的是home按鈕,才退出
//直接寫finish他暴力--因?yàn)閍ctionbar上可能會(huì)有好多按鈕
finish();
}
return super.onOptionsItemSelected(item);
}
給actionbar添加菜單按鈕
//添加菜單按鈕
@Override
public boolean onCreateOptionsMenu (Menu menu){
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
+菜單按鈕的布局
<?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/search"
android:enabled="true"
android:icon="@drawable/ic_about"
android:title="搜索"
app:showAsAction="always" />
</menu>