开发者社区> 一叶飘舟> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

android开发action bar中menu菜单action overflow问题

简介:
+关注继续查看

http://blog.csdn.net/suppercoder/article/details/10212875
最近在学习action bar的内容,是直接参考android官网的资料学习。

      参考http://developer.android.com/training/basics/actionbar/adding-buttons.html 文档学习action bar的开发过程中,遇到一个问题,经过搜索以及查阅更详细文档,得到解答,现以记录。

      根据原文的描述,根据下面配置使用menu

res/menu/main_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" />
</menu>


 

应该得到动作栏的图标如图:


注意,红框是我加上的强调。

问题所在我根据文档配置后,设置有部分按钮为

附上我的配置:

android:showAsAction="never"

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.     <item android:id="@+id/action_search_id"  
  3.           android:icon="@drawable/ic_action_search"  
  4.           android:title="@string/action_search"  
  5.           android:showAsAction="ifRoom" />  
  6.     <item android:id="@+id/action_attach_id"  
  7.           android:icon="@drawable/ic_action_attach"  
  8.           android:title="@string/action_search"  
  9.           android:showAsAction="ifRoom" />  
  10.     <item android:id="@+id/action_call_id"  
  11.           android:icon="@drawable/ic_action_call"  
  12.           android:title="@string/action_search"  
  13.           android:showAsAction="never" />  
  14.     <item android:id="@+id/action_copy_id"  
  15.           android:icon="@drawable/ic_action_copy"  
  16.           android:title="@string/action_search"  
  17.           android:showAsAction="never" />  
  18. </menu>  
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/action_search_id"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <item android:id="@+id/action_attach_id"
          android:icon="@drawable/ic_action_attach"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <item android:id="@+id/action_call_id"
          android:icon="@drawable/ic_action_call"
          android:title="@string/action_search"
          android:showAsAction="never" />
    <item android:id="@+id/action_copy_id"
          android:icon="@drawable/ic_action_copy"
          android:title="@string/action_search"
          android:showAsAction="never" />
</menu>

配置上明显有两个是设置了never的显示属性,但出来的效果是没有红框所显示的action overflow样式。


问题追踪:从搜索action overfolw的内容中找到一个很有价值的内容http://blog.sina.com.cn/s/blog_4ad7c2540101eh5c.html,按原文中提到:

  1. 4)Action overflow  
  2. Action overflow中存放并不会频繁用到的操作。按照官方网页上的说法,“Overflow图标仅显示在没有MENU硬按键的手机上,而对于有MENU键的手机,  
  3. overflow图标是不显示的,当用户点击MENU按键时弹出。”这样的说法比较蹊跷,似乎和Google敦促手机厂商及软件开发商取消MENU的行为不相匹配。  
4)Action overflow
Action overflow中存放并不会频繁用到的操作。按照官方网页上的说法,“Overflow图标仅显示在没有MENU硬按键的手机上,而对于有MENU键的手机,
overflow图标是不显示的,当用户点击MENU按键时弹出。”这样的说法比较蹊跷,似乎和Google敦促手机厂商及软件开发商取消MENU的行为不相匹配。

我再参考官方文档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功能键!这么来说,应该就解析的通了,显示隐藏动作的功能由菜单功能键实现。我们直接做一下验证,点击Menu键,如图所示:



在下方我们看到了显示的字符串,我原来的配置只简单的显示<string name="action_search">str_action_search</string>这里配置的字符串,对于演示没有多大的影响。


这本来不是什么大问题,但是仅仅一个小功能,也许也会使我们疑惑,在此解释清楚。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android侧滑菜单完整详细示例(改进版)
MainActivity如下:package cc.cd; import android.os.Bundle; import android.view.
922 0
Android侧滑菜单完整详细示例(基础版)
MainActivity如下:package cc.cd; import android.os.AsyncTask; import android.
940 0
Android侧滑菜单完整详细示例(精装版)
MainActivity如下:package cn.patience7; import android.os.AsyncTask; import android.
1084 0
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
83 0
【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服
前言 由于项目越来越多,有很多公共的代码都可以抽取出一个开发库出来传到公司搭建好的Maven私服,以供大家使用。 之前搭建的Maven仓库只有Release和Snapshot两个仓库,最近由于开发库有时候不稳定有bug,不便于测试。
1340 0
【福利大放送】不止是Android,Github超高影响力开源大放送,学习开发必备教科书
GitHub 还在持续更新:https://github.com/nanchen2251/StudyForAndroid 一、写在前面 最近项目重构,时间贼多,也没什么时间更新博客,个人的开源项目也是多时没有更新了:https://github.com/nanchen2251/AiYaSchoolPush,然而没有更新不代表我不在乎,后面一有空还是会继续提交的。
1450 0
android studio 开发android app 真机调试
http://www.cnblogs.com/EasyInvoice/p/4415673.html
735 0
HTML/JS 调用android方法,开发 Android。
初次尝试用HTML/JS开发Android。 由于业务需求和大趋势导致,目前纵观很多APP。很多都是用H5+native的方式去开发。关于wepApp和nativeApp它们之前的是是非非就不说了。 下面是利用H5应该是JS去调用本地Android的代码。 不是什么特别高深的东西。 第一布局: 1 <RelativeLayou
1730 0
+关注
1635
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载