Android ActionBar 使用详解

时间:2014-05-08 00:53:50   收藏:0   阅读:505

ActionBar取代了以前的TitleBar,是一种更加灵活的人机交互方式;
ActionBar并不是完全自立门户的一个新兴的东西,而是和3.0以下版本的menu进行了合并整合;
so,添加actionbar的方式肯定和添加menu方式类似;

1.常见普通ActionBar
先来看一个menu的xml配置

bubuko.com,布布扣
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:showAsAction="always|collapseActionView"
        android:title="settings"/>
</menu>
bubuko.com,布布扣

其中,showAsAction是一个枚举类型的值,有5个取值;

注:它们之间可以配合使用;

2.上下分开的独立的ActionBar
实现这样的功能其实只需要一句代码:

bubuko.com,布布扣
android:uiOptions="splitActionBarWhenNarrow"
bubuko.com,布布扣

将这段代码放置到清单配置文件的对应的activity里面即可

3.可扩展的ActionBar(搜索框)

menu.xml

bubuko.com,布布扣
<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>
bubuko.com,布布扣

al.xml

bubuko.com,布布扣
<?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>
bubuko.com,布布扣

注意在menuitem里面配置的android:actionLayout属性,他代表当点击item的时候需要显示的view;也可通过android:actionViewClass属性指定;
这里再介绍几个相关的方法
》》监听actionView的展开与关闭事件

bubuko.com,布布扣
    @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);
    }
bubuko.com,布布扣

4.Tab样式ActionBar

添加实现代码

bubuko.com,布布扣
    @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);
    }
bubuko.com,布布扣

MyTabsListener.java(监听tab)改变事件

bubuko.com,布布扣
    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) {
        }
    }
bubuko.com,布布扣

 

5。。。未完待续

Android ActionBar 使用详解,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!