Android ActionBar 使用详解

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。。。未完待续

Android ActionBar 使用详解,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。