一. 前言
關(guān)于android狀態(tài)欄,其實(shí)之前自己在做開(kāi)發(fā)的時(shí)候就是會(huì)直接隱藏掉系統(tǒng)自帶的actionbar,然后創(chuàng)建一個(gè)LinearLayout布局,高度設(shè)置為actionSize,然后就直接在這個(gè)布局里面擺放控件(往事不堪回首)。直到第一次使用到了ToolBar,沃德瑪雅!怎么那么好用,后來(lái)就一發(fā)不可收拾的愛(ài)上了這個(gè)Google官方推薦的bar了。
二. ToolBar的基本使用
首先是需要在res/values/styles.xml中設(shè)置AppTheme中parent的主題為NoActionBar主題,接著就會(huì)發(fā)現(xiàn)我們的xml預(yù)覽圖中所有界面的頂部就都沒(méi)有了bar。

接著就是在布局文件中來(lái)使用ToolBar了:

如果想要改變ToolBar上面顯示的文字,則可以到AndroidMainifest.xml中來(lái)進(jìn)行修改:

三. 在ToolBar上面設(shè)置返回和menu
1.設(shè)置返回
使用Toolbar可以很方便的的設(shè)置app左上角的返回/打開(kāi)滑動(dòng)窗口的按鈕,具體的操作代碼如下:

上述代碼需要注意一下:在getSupportActionBar()之前必須要先setSupportActionBar(),否則圖標(biāo)就不會(huì)顯示出來(lái),圖標(biāo)的默認(rèn)樣式是一個(gè)箭頭向右的返回箭頭,如果想要改變圖片,則可以調(diào)用setHomeAsUpIndicator()方法:
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true); //顯示圖標(biāo)
actionBar.setHomeAsUpIndicator(R.drawable.menu); //自定義圖標(biāo)
}
如果想要對(duì)圖標(biāo)設(shè)置點(diǎn)擊事件,則可以調(diào)用如下代碼:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case android.R.id.home: //默認(rèn)id
finish();
break;
}
return true;
}
2.設(shè)置menu
接下來(lái)對(duì)Toolbar的右上角進(jìn)行操作,來(lái)增加一個(gè)menu。首先是在res中新建一個(gè)Directory叫做menu,接著在menu文件夾中創(chuàng)建一個(gè)Menu resource file創(chuàng)建一個(gè)xml文件:

接著就是在主代碼中將menu加載進(jìn)入Toolbar中:
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.toolbar,menu);
return true;
}
最后就是對(duì)每一項(xiàng)menu設(shè)置點(diǎn)擊事件,修改onOptionsItemSelected方法:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case android.R.id.home:
finish();
break;
case R.id.menu1:
Toast.makeText(this, "menu1", Toast.LENGTH_SHORT).show();
break;
case R.id.menu2:
Toast.makeText(this, "menu2", Toast.LENGTH_SHORT).show();
break;
case R.id.menu3:
Toast.makeText(this, "menu3", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
四. 我只想在右上角設(shè)置一個(gè)按鈕
如果想在Toolbar的右上角設(shè)置一個(gè)按鈕,思路就是創(chuàng)建一個(gè)只有一個(gè)子項(xiàng)的menu,然后在item里面設(shè)置app:showAsAction=“always”即可:
