Android Function(1)| ActionBar的操作

一. 前言

關(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。

NoActionBar

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

設(shè)置布局

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

顯示的文字

三. 在ToolBar上面設(shè)置返回和menu

1.設(shè)置返回

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


顯示圖標(biāo)

上述代碼需要注意一下:在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 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”即可:

always

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容