Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ActionBar動作欄

Android ActionBar動作欄

編輯:關於Android編程


ActionBar動作欄

一、ActionBar:(動作欄)
(一)、簡介:(擴展TitleBar)
Action bar(動作欄)是一個導航控件,用以代替傳統屏幕頂端的標題欄。ActionBar是顯示在屏幕頂部的控件,它包括了在左邊顯示的應用的logo圖標和右邊操作菜單的可見項。類似於windows桌面程序的工具欄。
效果如下圖: vcq9o6y/ydLUx9C7u7bguPYKICBGcmFnbWVudKGjCgoKCjxicj4KCgoKCgoKIDwzPi7Nu7P2z9TKvkFjdGl2aXR5tcTSu9Cp1tjSqrLZ1/ejqMjnobDXorLhobEsobC1x8K8obGhoqGwy9HL96GxLA=="設置"等)。將平時隱藏的選項菜單顯示成活動項ActionItem。

上面的總結一下:Action bar就是替換3.0以前的tittle bar和menu。

\ 圖1. Honeycomb Gallery應用中的操作欄,從左邊開始,依次是logo、導航選項標簽和操作項(在右邊插入的一個懸浮菜單按鈕)。

Note: If you"re looking for information about the contextual action bar for displaying contextual action items, see the Menu guide.

Action Bar Design For design guidelines, read Android Design's Action Bar guide.


2、ActionBar分成四個區域:

\
    • App Icon:可顯示APP的icon,也可用其他圖標代替。當軟件不在最高級頁面時,圖標左側會顯示一個左箭頭,用戶可以通過這個箭頭向上導航。
    • 視圖切換:(效果如下圖)
    • Action Buttons:這個放最重要的軟件功能,放不下的按鈕就自動進入Action overflow了。
    • Action overflow:不常用的操作項目自動進入Action OverFlow
      \
      【備注:】什麼是Action overflow
      對於沒有MENU按鍵的手機,ActionBar會在最後顯示一個折疊的圖標,點擊該圖標會顯示剩余的選項菜單項。這個折疊的圖標功能就是Action overflow。
      Action overflow中存放並不會頻繁用到的操作。按照官方網頁上的說法,“Overflow圖標僅顯示在沒有MENU硬按鍵的手機上,而對於有MENU鍵的手機,overflow圖標是不顯示的,當用戶點擊MENU按鍵時彈出。” 事實上Google已經敦促手機廠商及軟件開發商取消MENU菜單。也就是以前的Menu將不再使用。

      (3).ActionBar的創建原則:
      ①.經常使用:對於用戶來說經常使用的,例如短信應用中的"新建短信"菜單項. ②.重要:對用戶來說非常重要的操作,例如Wi-Fi設置中的"新建網絡". ③.典型:同類的應用程序中都提供了該動作項,如聯系人應用中的"新建聯系人"

      (二)、創建ActionBar:


      1、XML資源文件中定義menu。同樣可以有普通菜單、二級普通菜單、二級可選項菜單。

      
      
      
      
      
      
       
      
      
      
      
      
              android:id="@+id/menu_about"
              android:orderInCategory="2"
              android:showAsAction="never"    
              android:title="關於"/>
      【注意:android:showAsAction的屬性值有:never、always、ifRoom、withText、collapseActionView】
       android:showAsAction屬性值的解釋:
        • never : 不將該MenuItem顯示在ActionBar上(是默認值)
        • always : 總是將該MenuItem顯示在ActionBar上
        • ifRoom : 當AcitonBar位置充裕時將該MenuItem顯示在ActionBar上
        • withText : 將該MenuItem顯示在ActionBar上,並顯示該菜單項的文本
        • collapseActionView : 將該ActionView折疊成普通菜單項。最低API=14

          多個屬性可以同時使用,使用“|”分隔。


          (三)、啟動程序圖標導航:(就是讓APP的LOGO也變成可以點擊的導航圖標。)


          核心代碼如下:
          
          
          
          
          
          
          
          
          
          
          
          
                          ActionBar actionBar = this.getActionBar();
                       actionBar.setDisplayHomeAsUpEnabled(true);
                       actionBar.setHomeButtonEnabled(true);
                       actionBar.setDisplayShowHomeEnabled(true);

                  @Override
                  public boolean onOptionsItemSelected(MenuItem item) {
          
          
          
          
          
          
          
          
                          switch (item.getItemId()) {
                          case android.R.id.home:
                                  Intent intent = new Intent(this, MainActivity.class);
                                  //將Activity棧中處於MainActivity主頁面之上的Activity都彈出。
                                 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                  startActivity(intent);
                                  break;
                          case R.id.action_search:
                                  break;
                          default:
                                  return super.onOptionsItemSelected(item);
                          }
                          return true;
                  }

          代碼解釋:

          actionBar = getActionBar(); 獲取ActionBar對象。
          actionBar.setDisplayHomeAsUpEnabled(true); 設置是否將LOGO圖標轉成可點擊的按鈕,並在圖
          標前添加一個向左的箭頭。
          actionBar.setHomeButtonEnabled(true); 設置是否將LOGO圖標轉變成可點擊的按鈕。
          actionBar.setDisplayShowHomeEnabled(true); 設置是否顯示LOGO圖標。

          (四)、ActionBar中添加Action View:
          1、Action的學習要掌握如何將選項菜單顯示成Action Item; 2、要掌握如何啟動程序Logo導航; 3、ActionBar還可以添加Action View。 調用方式1為:在xml文件中寫上android:actionLayout="@layout/布局名"。 調用方式2為:在xml文件中寫上android:actionViewClass="android.widget.SearchView"。 4、示例代碼:
          核心代碼如下:
          
          
          
          
          
          
          
          
          
          
             
          
          
          
          
          
          
          
          
          
                  android:id="@+id/action_search"
                  android:orderInCategory="1"
                  android:showAsAction="always"
                  android:title="搜索"
                  android:icon="@drawable/ic_launcher"
                  android:actionViewClass="android.widget.SearchView"  //兩種寫法任選其一
                  android:actionLayout="@layout/search” 
                  />
          
          
          
          
          
          
          
          
              
          
          
          
          
          
          
          
                  android:id="@+id/action_clock"
                  android:orderInCategory="2"
                  android:showAsAction="always"
                  android:title="時鐘"
                  android:icon="@drawable/ic_launcher"
                  android:actionLayout="@layout/clock"
                  />
          
          
          
          
          
          【備注:】以上兩個布局文件代碼如下:
          
          
          
          
          
          
          
          
          一、顯示搜索的布局文件:
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
          
          
          
          
          
          
          
          
              
          
          
          
          
          
          
          
                  android:id="@+id/search_main"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" >
              

          
          
          
          
          

          二、顯示時鐘的布局文件:
          
          
          
          
          
          
          
          
          
          
          
          
          
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
          
          
          
          
          
          
          
          
              
          
          
          
          
          
          
          
                  android:id="@+id/analogClock_main"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
          
          
          
          
          
          
          
          
          
          
          
          
          

          (五)、ActionBar在窗體底部顯示:
          在清單配置文件中設置android:uiOptions屬性為:splitActionBarWhenNarrow 可以在application或者activity節點中。
          1、核心代碼:
           
          
          
          
          
          
          
          
          
          
                      android:name="com.steven.android23.tab5_fragmentactionbartwo.MainActivity"
                      android:label="@string/app_name" 
                      android:uiOptions="splitActionBarWhenNarrow">

          (六)、ActionBar保護現場:
          1、目的:當橫豎屏切換時,會讓頁面重新加載。在tab模式下,如何記住之前的tab索引呢?需要保護現場。
          2、核心代碼:
             @Override
          
          protected void onSaveInstanceState(Bundle outState) {
          Log.i(TAG, "==index:" + getActionBar().getSelectedNavigationIndex());
          outState.putInt("tabindex", getActionBar().getSelectedNavigationIndex());
          }


          @Override
          protected void onRestoreInstanceState(Bundle savedInstanceState) {
          getActionBar().setSelectedNavigationItem(
          savedInstanceState.getInt("tabindex"));
          }


          (七).ActionBar的其他操作:

          ①.設置ActionBar的自定義視圖:

          bar.setDisplayShowCustomEnabled(true);

          bar.setDisplayHomeEnabled(false);

          bar.setCustomView(R.layout.custom_view);

          ②.設置ActionBar的Logo圖標:

          bar.setLogo(R.drawable.logo);

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved