API Demos(7) ActionBar

最近编辑于2018年4月30日

这篇博客涉及的demo是Androidmanifest.xml下label以 App/Action Bar/开头的activity,都是app文件夹下的类。

一、ActionBarMechanics类

主要讲了代码中新建菜单项的方法

 

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Menu items default to never show in the action bar. On most devices this means
        // they will show in the standard options menu panel when the menu button is pressed.
        // On xlarge-screen devices a "More" button will appear in the far right of the
        // Action Bar that will display remaining items in a cascading menu.
        menu.add("Normal item");

        MenuItem actionItem = menu.add("Action Button");

        // Items that show as actions should favor the "if room" setting, which will
        // prevent too many buttons from crowding the bar. Extra items will show in the
        // overflow area.
        actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

        // Items that show as actions are strongly encouraged to use an icon.
        // These icons are shown without a text description, and therefore should
        // be sufficiently descriptive on their own.
        actionItem.setIcon(android.R.drawable.ic_menu_share);

        return true;
    }

然后以及菜单项点击事件的处理

 

 

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();
        return true;
    }

二、ActionBarNavigation和ActionBarNavigationTarget

 

1、

    public void onNewActivity(View button) {
        Intent intent = new Intent(this, ActionBarNavigationTarget.class);
        startActivity(intent);
    }

    public void onNewDocument(View button) {
        Intent intent = new Intent(this, ActionBarNavigationTarget.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
        startActivity(intent);
    }

使用FLAG_ACTIVITY_NEW_DOCUMENT标签能够在不同的任务中打开该页面,也就是如下

即使该activity与上一个activity处于同一个任务栈,只要使用该标签也会在一个独立的任务栈中创建。

 

        final ActionBar bar = getActionBar();
        bar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);

配合

android:parentActivityName=".app.ActionBarNavigation"

可以让actionbar左上角返回键点击后返回上一个页面。

 

注:v7包中AppCompatActivity类setDisplayHomeAsUpEnabled(true)已经实现了返回上一个页面,不需要指定android:parentActivityName。
三、ActionBarTabs

 

        if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) {
            //一般模式下的ActionBar
            bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
            bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);
        } else {
            //tab模式下的ActionBar
            bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
        }

然后就是addTab(),removeTabAt(),removeAllTabs()方法添加tab,移除tab,移除所有tab。以及tab的监听setTabListener(new TabListener(new TabContentFragment(text))),TabListener中重写onTabSelected(),onTabUnselected(),onTabReselected()选择,没有选中,选中的情况下再次选中三个方法。

 

四、ActionBarUsage

1、ActionBar上的搜索框

i、该菜单项设置android:actionViewClass="android.widget.SearchView"属性

ii、activity实现OnQueryTextListener接口并实现其中的onQueryTextChange(String newText)和onQueryTextSubmit(String query)方法。

2、onPrepareOptionsMenu(Menu menu)方法在创建菜单(以及展开子菜单)时或调用invalidateOptionsMenu()方法时调用。
五、ActionBarSettingsActionProviderActivity

讲了自定义ActionProvider,可以自定义菜单项,重写其中的onCreateActionView()(可以自定义该菜单项的UI)和onPerformDefaultAction()(点击该菜单项事件的处理)。

六、ActionBarShareActionProviderActivity

讲了Google关于分享的ActionProvider。
七、ActionBarDisplayOptions

讲了ActionBar的flags

1、DISPLAY_HOME_AS_UP返回键

2、DISPLAY_USE_LOGO是否使用应用logo或者系统logo,DISPLAY_SHOW_HOME是否展示该logo

3、DISPLAY_SHOW_TITLE是否显示标题

4、DISPLAY_SHOW_CUSTOM是否显示自定义view

5、NAVIGATION_MODE_TABS(tab模式),NAVIGATION_MODE_LIST(列表模式),NAVIGATION_MODE_STANDARD(一般模式)。

6、actionbar.hide()隐藏ActionBar

7、getWindow().getDecorView().setSystemUiVisibility(0)显示状态栏,getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN)隐藏状态栏。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值