Android ActionBar 使用詳解

來源:互聯網
上載者:User

標籤:android   style   blog   class   code   java   

ActionBar取代了以前的TitleBar,是一種更加靈活的人機互動方式;
ActionBar並不是完全自立門戶的一個新興的東西,而是和3.0以下版本的menu進行了合并整合;
so,添加actionbar的方式肯定和添加menu方式類似;

1.常見普通ActionBar
先來看一個menu的xml配置

<menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/action_settings"        android:showAsAction="always|collapseActionView"        android:title="settings"/></menu>

其中,showAsAction是一個枚舉類型的值,有5個取值;

  • never:不顯示在actionBar上,只有通過menu菜單才能呼出此功能表項目;
  • ifroom:如果actionBar上有足夠的空間則顯示;
  • always:總是顯示;
  • collapseActionView:為瞭解決空間的問題,收縮ActionView;
  • withText:顯示文字;

註:它們之間可以配合使用;

2.上下分開的獨立的ActionBar
實現這樣的功能其實只需要一句代碼:

android:uiOptions="splitActionBarWhenNarrow"

將這段代碼放置到清單設定檔的對應的activity裡面即可

3.可擴充的ActionBar(搜尋方塊)

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/action_query"        android:actionLayout="@layout/al"        android:showAsAction="always|collapseActionView"        android:title="query"/></menu>

al.xml

<?xml version="1.0" encoding="utf-8"?><EditText xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content" ></EditText>

注意在menuitem裡面配置的android:actionLayout屬性,他代表當點擊item的時候需要顯示的view;也可通過android:actionViewClass屬性指定;
這裡再介紹幾個相關的方法
》》監聽actionView的展開與關閉事件

    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        for (int i = 0; i < menu.size(); i++) {            menu.getItem(i).setOnActionExpandListener(                    new OnActionExpandListener() {                        @Override                        public boolean onMenuItemActionExpand(MenuItem arg0) {                            Log.e("tag", "onMenuItemActionExpand");                            return true;                        }                        @Override                        public boolean onMenuItemActionCollapse(MenuItem arg0) {                            Log.e("tag", "onMenuItemActionCollapse");                            return true;                        }                    });        }        return super.onCreateOptionsMenu(menu);    }

4.Tab樣式ActionBar

添加實現代碼

    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_tab);        mActionBar = getActionBar();        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        mActionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME);        ActionBar.Tab tabA = mActionBar.newTab().setText("ATab");        ActionBar.Tab tabB = mActionBar.newTab().setText("BTab");        tabA.setTabListener(new MyTabsListener(new AFragment()));        tabB.setTabListener(new MyTabsListener(new BFragment()));        mActionBar.addTab(tabA, 0);        mActionBar.addTab(tabB, 1);        mActionBar.setSelectedNavigationItem(1);    }

MyTabsListener.java(監聽tab)改變事件

    protected class MyTabsListener implements ActionBar.TabListener {        private Fragment frag;        public MyTabsListener(Fragment frag) {            super();            this.frag = frag;        }        @Override        public void onTabSelected(Tab tab, FragmentTransaction ft) {            ft.replace(R.id.framel, frag);        }        @Override        public void onTabUnselected(Tab tab, FragmentTransaction ft) {        }        @Override        public void onTabReselected(Tab tab, FragmentTransaction ft) {        }    }

 

5。。。未完待續

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.