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

Android-ActionBar詳解

編輯:關於Android編程

Action Bar

介紹

Action Bar 是Google 在Android 3.0之後推出的一種全新用戶操作方式 目的是用來替換掉菜單按鍵功能,長按操作功能,提供一種全新的操作體驗 統一界面.方便開發
這裡寫圖片描述

ActionBar 4大部分

這裡寫圖片描述
1. app 圖標:包含了 圖標,主標題,副標題,回退部分
2. 視圖控件:允許用戶切換視圖。視圖切換控件的樣式有下拉菜單或選項卡控件,d對應了,標准,list,tab,3種導航模式
3. 操作按鈕:在操作欄裡,展示出你的 app 中最重要的操作。不能展示在操作欄裡的操作,可以自動移到“更多操作”裡
4. 更多操作:把不常用的操作放到更多操作裡

如何支持actionbar?

android sdk 3.0之後默認支持actionBar 市面上也有開源的actionbarSherlock可以支持ActionBar google 2013 i/o大會.在v7(api level 7_android2.1以上)中對actionbar進行了兼容;

這裡寫圖片描述

使用v7包支持ActionBar

1.引入android-support-v7-appcompat,使用android sdk manager下載,在%ANDROID_SDK%\extras\android\support\v7 Activity繼承ActionBarActivity 修改主題,主題需要是v7下的@style/Theme.AppComp.XXX

v7包關聯源碼,Android Dependencies 目錄下jar包關聯源碼

android sdk manager下載的extra目錄下,v7包沒有相關的源碼
Android Dependencies 目錄下jar包關聯源碼
建立同名的android-support-v7-appcompat.jar.properties,放到libs目錄下面,properties裡面配置源碼路徑src=D:\android\android-sdk\extras\android\support\v7\src 拷貝android-support-v7-appcompat.jar到libs,然後右鍵add to build path,然後關聯; 直接拷貝源碼

ActionBar標題圖標部分

用來顯示標題和回退的
相關Api的使用

// 獲取ActionBar
mActionBar = getSupportActionBar();

mActionBar.setTitle("MainTitle");// 設置主title部分
mActionBar.setSubtitle("SubTitle");// 設置子title部分

mActionBar.setIcon(R.drawable.ic_launcher);// 設置應用圖標

mActionBar.setDisplayShowTitleEnabled(true);// 設置菜單 標題是否可見
mActionBar.setDisplayShowHomeEnabled(true);// 設置應用圖標是否
mActionBar.setDisplayUseLogoEnabled(false);// 設置是否顯示Logo優先
mActionBar.setDisplayHomeAsUpEnabled(true);// 設置back按鈕是否可見

ActionBar視圖控件部分

標准模式。默認情況下就是標准模式

List模式
這裡寫圖片描述

通過ActionBar設置導航模式

// actionBar的導航模式---List
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

在List模式下設置數據的適配以及監聽

    // 初始化數據
    final List objects = new ArrayList();
    objects.add("主頁");
    objects.add("新聞");
    objects.add("娛樂");

    // 創建adapter
    ArrayAdapter adapter = new ArrayAdapter(this,
                                                            android.R.layout.simple_list_item_1, objects);

    // 創建監聽
    OnNavigationListener listener = new OnNavigationListener() {

        @Override
        public boolean onNavigationItemSelected(int itemPosition, long
                                                itemId)
        {
            Toast.makeText(getApplicationContext(), objects.get(itemPosition) +
                                                    "", Toast.LENGTH_SHORT).show();

            return false;
        }
    };

    // 給ActionBar設置List導航模式下的數據適配和監聽
    mActionBar.setListNavigationCallbacks(adapter, listener);

Tab模式
這裡寫圖片描述

通過ActionBar設置Tab模式

// actionBar的導航模式---TAB
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

在Tab模式下設置數據的適配以及監聽

    final List mTabs = new ArrayList();
    for (int i = 0; i < 3; i++)
    {
        //創建tab
        Tab tab = mActionBar.newTab();
        tab.setText("tab" + (i + 1));
        tab.setIcon(R.drawable.ic_launcher);

        mTabs.add(tab);
        //設置Tab的監聽
        tab.setTabListener(new TabListener() {

            @Override
            public void onTabUnselected(Tab tab, FragmentTransaction ft)
            {
                Toast.makeText(getApplicationContext(), tab.getText() + "取消選中了",
                                Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onTabSelected(Tab tab, FragmentTransaction ft)
            {
                Toast.makeText(getApplicationContext(), tab.getText() + "選中了",
                                Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onTabReselected(Tab tab, FragmentTransaction ft)
            {
                Toast.makeText(getApplicationContext(), tab.getText() + "重新選中了",
                                Toast.LENGTH_SHORT).show();
            }
        });

        //將tab添加到actionBar中
        mActionBar.addTab(tab);
    }

ActionBar 操作按鈕部分

創建Action button

復寫 activity 的 onCreateOptionsMenu()方法

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater = getMenuInflater();
    // 將布局掛載到menu上
    inflater.inflate(R.menu.main, menu);

    return super.onCreateOptionsMenu(menu);
}

給menu創建對應的menu 的xml文件



	  

低版本適配的說明:

在menu對應的xml文件的根節點,需要聲明 自定義命名空間:
code
xmlns:heima="http://schemas.android.com/apk/res-auto"
item中的屬性 showAction 命名空間需要設置成自定義的

ShowAction的取值說明:

always : 總是顯示 ifroom : 如果放的下去,就顯示(溢出菜單) never : 從不顯示 withText: 和文本一起顯示 collapseActionView: 折疊顯示

Menu菜單的類型:

Group菜單 裡面可以放置Item結點 子菜單 Item裡面可以放置Menu結點

actionViewClass屬性

響應Action Button 事件

復寫onOptionsItemSelected()響應item事件
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    return super.onOptionsItemSelected(item);
}

searchView



SupportMenuItem supportMenuItem = (SupportMenuItem) item;
SearchView searchView = (SearchView) supportMenuItem.getActionView();

ActionBar Split顯示

在清單文件中給Activity添加屬性
xml
android:uiOptions="splitActionBarWhenNarrow"

低版本支持時需要在Activity中添加meta元數據的支持
xml
android:name="android.support.UI_OPTIONS"
android:value="splitActionBarWhenNarrow" />

Action Mode

這裡寫圖片描述

呼出Action Mode功能

startActionMode(Callback);

低版本中

startSupportActionMode(Callback);

Action Mode的回調(Callback)

// 創建action mode時的回調
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu)
{
    getMenuInflater().inflate(R.menu.action_mode, menu);

    // 返回true說明有action mode
    return true;
}
// 准備開始起時的回調
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu)
{
    // TODO Auto-generated method stub
    return true;
}

// action mode中的item被點擊時的回調
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item)
{

    return false;
}

//action mode 銷毀時的回調
@Override
public void onDestroyActionMode(ActionMode mode)
{
    Toast.makeText(this, "關閉了", Toast.LENGTH_SHORT).show();
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved