Android官方導航欄ActionBar使用詳解

傑瑞教育發表於2015-05-13

一、ActionBar概述

ActionBar是androiD3.0以後新增的元件,主要用於標示應用程式以及使用者所處的位置並提供相關操作以及全域性的導航功能。下面我們就看看如何使用ActionBar,真正使用之前,我們應該首先了解一下ActionBar的結構。

根據官方文件,我們看到整個ActionBar可以分為4個部分,具體如下圖:

Android之官方導航欄ActionBar

1、  App icon:主要用於展示App的Logo,如果當前介面不是一級介面,還可以展示返回導航。

2、  View Control:用於切換不同的檢視或者展示非互動資訊如app標題等。

3、  Action Buttons:用於展示app中最重要的操作按鈕,如果過多actionbar中放不下則會轉移到Action overflow中,長按會展示操作名稱。根據文件說明,Action Buttons的總寬度不會超過ActionBar的50%。

4、  Action overflow:用於存放展示相對較少使用的操作按鈕。

瞭解了ActionBar的基本結構後,下面我們一起看看如何使用ActionBar。

二、ActionBar的使用

因為actionbar是android3.0之後新增的所以如果在API Level 11以下的版本使用actionBar的話需要匯入v7支援包,在這裡我們為了相容低版本需要加入支援包,然後通過以下兩個步驟就可以使用ActionBar了。

1、  建立Activity是繼承ActionBarActivity

2、  將app或者Activity的主題設定為@style/Theme.AppCompat.Light

之後執行程式可以看到如下效果圖:

 Android之官方導航欄ActionBar

如果不想展示ActionBar,我們可以通過如下程式碼:

         //取得ActionBar物件
        ActionBar actionBar =getSupportActionBar();
        //呼叫hide方法,隱藏actionbar
        actionBar.hide();
        //呼叫show方法,展示actionbar
        //actionBar.show();

根據actionBar的結構,我們先了解App icon區域的相關操作,此部分主要有兩個部分,一部分用於展示Logo,一部分用於展示返回鍵導航,返回鍵導航主要操作如下:

1、  返回鍵導航的顯示與隱藏:setDisplayHomeAsUpEnabled(Boolean flag)

2、  返回鍵導航的圖示設定:setHomeAsUpIndicator

3、  返回鍵的事件處理:重寫onOptionsItemSelected方法,做如下判斷

if(id==android.R.id.home){

            Toast.makeText(this,"點選了返回!!",Toast.LENGTH_SHORT).show();

            return true;

}

效果圖如下:

 Android之官方導航欄ActionBar

Logo區主要操作:

1、  Logo的顯示與隱藏:

setDisplayShowHomeEnabled(Boolean flag)

setDisplayUseLogoEnabled(Boolean flag)

2、  Logo的設定:setLogo

設定後效果圖如下:

 Android之官方導航欄ActionBar

第二部分是View Control區,此區域可放置內容比較多,除了用於檢視導航的Spinner、tabs、ShareActionProvider,還可以顯示標題等資訊、自定義View等。本次內容我們先來看看標題部分,其餘的下次再做仔細詳細介紹。

主要操作:

1、  顯示與隱藏標題:setDisplayShowTitleEnabled(Boolean flag)

2、  設定主標題:setTitle

3、  設定副標題:setSubtitle

4、  設定自定義View:setCustomView

顯示效果如下圖:

 Android之官方導航欄ActionBar

Action Buttons和Action flow 的操作類似,都是用於存放展示操作按鈕,那麼如何將操作按鈕顯示在actionbar中呢?

在這裡,我們可以分為兩步:

1、  重寫onCreateOptionsMenu,此方法用於生成選單按鈕,有兩種方式,一種方式編寫xml檔案,另外一種是java程式碼生成,這裡我們選擇編寫xml。

2、  重寫onOptionsItemSelected,此方法用於響應選單操作。

Xml內容如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
    <item android:id="@+id/action_search" android:title="搜尋"
        android:orderInCategory="100" app:showAsAction="always"
        android:icon="@drawable/ic_launcher"/>
    <item android:id="@+id/action_share" android:title="分享"
        android:orderInCategory="100" app:showAsAction="never" />
    <item android:id="@+id/action_collection" android:title="收藏"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_font" android:title="字型大小"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

ShowAsAction是非常重要的屬性,它的值決定了選單顯示區域,分別有never、always、ifroom等

效果如下:

 Android之官方導航欄ActionBar

Android之官方導航欄ActionBar

想要了解更多內容的小夥伴,可以點選下載原始碼,親自執行測試。

相關文章