关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Android中ActionBar及Overflow的显示

    Android中ActionBar及Overflow的显示

    2014-10-19 00:00:00 出处:ITJS
    分享

    最近在按照Android的API文档学习Android中actionbar的使用,Action bar 最基本的形式,就是为 activity 显示标题,并且在标题左边显示一个 app icon。在这样简单的形式下,对于所有的 activity 来说,action bar 对告知用户他们当前所处的位置十分有用,并为你的 app 维护了持续的同一标识。Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。使用ActionBar的好处是,它可以给提供一种全局统一的UI界面。

    配置实现ActionBar

    首先需要自己配置menu,在menu中添加相对应的Item(/res/menu/main.xml)中进行如下配置:,添加了三个Item

    <item
    android:id=”@+id/action_settings”
    android:icon=”@drawable/ic_launcher”
    android:showAsAction=”always|withText”
    android:title=”@string/action_settings”/>
    <item
    android:id=”@+id/icon_edit”
    android:icon=”@drawable/ic_launcher”
    android:showAsAction=”never|withText”
    android:title=”@string/main_actionEdit”/>
    <item
    android:id=”@+id/icon_search”
    android:icon=”@drawable/ic_launcher”
    android:showAsAction=”never|withText”
    android:title=”@string/main_actionSearch”/>

    item中showAsAction属性有四个:
    1、always:这个值会使菜单项一直显示在Action Bar上。
    2、ifRoom:假如有足够的空间,这个值会使菜单项显示在Action Bar上。
    3、never:这个值使菜单项永远都不出现在Action Bar上。
    4、withText:这个值使菜单项和它的图标,菜单文本一起显示。

    同时还需要在Activity重写onCreateOptionsMenu方法:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
    }

    按照API文档出现的结果应该是这个样子的,注意三个点:

    但是现实是:

    由于我是初学者,所以当官方文档和个人实战有冲突的时候,就郁闷了,完全是一步步按照文档过来的,所以这个时候就郁闷了,上网也是一通猛找,发现了原因:

    http://developer.android.com/guide/topics/ui/actionbar.html,这个上面有段英文:

    The action bar provides users access to the most important action items relating to the app’s current context. Those that appear directly in the action bar with an icon and/or text are known as action buttons. Actions that can’t fit in the action bar or aren’t important enough are hidden in the action overflow. The user can reveal a list of the other actions by pressing the overflow button on the right side (or the device Menu button, if available).

    我就不翻译了,简单点说假如设备有菜单功能键,显示隐藏动作的功能将会由Menu菜单功能键实现,点击了一下menu,效果如下:

    菜单出现了,不过就是没有那三个点,还是有点不甘心,又找了找,还有有人遇到过这个问题的,对于那三个点菜单的话,Android 3.0 (API level 11) +标准叫法叫做:action overflow button低版本的(Android 2.3.x (API level 10) or lower)对应的叫做:overflow menu,效果(不是三个点)是More按钮.

    假如非要显示出来Overflow的菜单,需要手动的写代码去加载出来,stackoverflow有老外贴了代码,onCreate中调用一下就可以了,我就不了:

    http://stackoverflow.com/questions/20444596/how-to-force-action-bar-overflow-icon-to-show

    private void getOverflowMenu() {
          try {
             ViewConfiguration config = ViewConfiguration.get(this);
             Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
             if(menuKeyField != null) {
                 menuKeyField.setAccessible(true);
                 menuKeyField.setBoolean(config, false);
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }

    隐藏ActionBar,使用getActionBar获取之后直接隐藏就行,就不贴图了:

    ActionBar bar=getActionBar();
    bar.hide();

    这个时候还可以设置Menu中Item的点击事件:

    @Override
       public boolean onOptionsItemSelected(MenuItem item) {
           switch (item.getItemId()) {
           case R.id.icon_edit:
              Toast.makeText(this, "触发编辑按钮事件", Toast.LENGTH_SHORT).show();
               return true;
           case R.id.action_settings:
               Intent intent=new Intent(this,PesonActivity.class);
                  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP  
                          | Intent.FLAG_ACTIVITY_NEW_TASK);  
               startActivity(intent);
               return true;
           case R.id.icon_search:
               Toast.makeText(this, "触发搜索按钮事件", Toast.LENGTH_SHORT).show();
               return true;
           default:
               return super.onOptionsItemSelected(item);
       }
       }

    手动实现Menu

    Activity之间是可以相互调用的,也可以从子Activity返回到父Activity,新建一个PersonActivity,通过手动写代码去配置Menu:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        //添加菜单项
        MenuItem add=menu.add(0,0,0,"添加");
        MenuItem del=menu.add(0,0,0,"删除");
        add.setIcon(R.drawable.btn_check_on_pressed);
        del.setIcon(R.drawable.btn_close_selected);
        //绑定到ActionBar  
        add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
        del.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        return true;
    }

    效果如图所示:

    这个时候可以看到红色地方有一个返回的箭头,需要在Activity中配置一下:

    android:parentActivityName=”com.example.googleaction.MainActivity”

    PesonActivity的Activity中需要调用一个方法:

    getActionBar().setDisplayHomeAsUpEnabled(true);

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。