[Android] ActionBar 显示overflow (就是后边三个点儿的按钮)

显示3个点的更多action button

从上面的代码我们知道,即使我们横屏也显示不出全部action button。我们可以加入3个点的action button来用下拉显示的方式,显示跟多的action button。在网上的信息得知,只要你的手机有menu键actionbar就不会显示3个点的更多或者说3个点的menu按钮。

  1. private void getOverflowMenu() {
  2. try {
  3. ViewConfiguration config = ViewConfiguration.get(this);
  4. Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
  5. if(menuKeyField != null) {
  6. menuKeyField.setAccessible(true);
  7. menuKeyField.setBoolean(config, false);
  8. }
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }
  12. }

onCreat()方法中调用这个方法可以显示3个点的menu按钮。下图是按下3个点的action button的效果

  • 对于很多PAD来说:ActionBar中空间足够显示的话,那么对应的menu菜单,只有不设置为ifRoom,然后才可以被放到overflow中:
  • 对于很多手机来说:ActionBar中没有足够的控件显示所有的菜单的话,即使是设置了ifRoom,很多菜单本来也也还是无法全部显示,所以:即使设置了ifRoom的menu的item,以及没有设置ifRoom的menu的item,都会被放到overflow中的
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >
  2. <item
  3. android:id="@+id/menu_settings"
  4. android:orderInCategory="100"
  5. android:showAsAction="never"
  6. android:title="settings"/>
  7. <item
  8. android:id="@+id/action_refresh"
  9. android:icon="@drawable/navigation_refresh"
  10. android:orderInCategory="101"
  11. android:showAsAction="ifRoom|withText"
  12. android:title="refresh"/>
  13. <item
  14. android:id="@+id/action_about"
  15. android:icon="@drawable/action_about"
  16. android:orderInCategory="101"
  17. android:showAsAction="ifRoom"
  18. android:title="about"/>
  19. <item
  20. android:id="@+id/action_search"
  21. android:icon="@drawable/action_search"
  22. android:orderInCategory="103"
  23. android:showAsAction="ifRoom"/>
  24. <item
  25. android:id="@+id/action_edit"
  26. android:icon="@android:drawable/ic_menu_edit"
  27. android:orderInCategory="105"
  28. android:showAsAction="ifRoom"
  29. android:title="edit"/>
  30. <item
  31. android:id="@+id/action_help"
  32. android:showAsAction="always"
  33. android:title="help"/>
  34. <item
  35. android:id="@+id/action_email"
  36. android:icon="@android:drawable/ic_dialog_email"
  37. android:orderInCategory="106"
  38. android:showAsAction="ifRoom"
  39. android:title="email"/>
  40. </menu>
  1. package com.example.demo_actionbarbasic;
  2. import com.example.demo_actionbarbasic.R;
  3. import android.app.ActionBar;
  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.os.Bundle;
  7. import android.view.Menu;
  8. import android.view.MenuItem;
  9. import android.widget.Toast;
  10. public class MainActivity extends Activity {
  11. private MenuItem menuItem = null;
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. // 通过hilde()和show()方法可以控制actionbar的隐藏和显示
  17. // ActionBar actionBar = getActionBar();
  18. // actionBar.hide();
  19. // actionBar.show();
  20. }
  21. // 我们可以看到,actonbar的用法跟选项菜单是一样的
  22. @Override
  23. public boolean onCreateOptionsMenu(Menu menu) {
  24. // Inflate the menu; this adds items to the action bar if it is present.
  25. getMenuInflater().inflate(R.menu.activity_main, menu);
  26. return true;
  27. }
  28. @Override
  29. public boolean onOptionsItemSelected(MenuItem item) {
  30. switch (item.getItemId()) {
  31. case R.id.action_refresh:
  32. Toast.makeText(this, "Menu Item refresh selected",
  33. Toast.LENGTH_SHORT).show();
  34. break;
  35. case R.id.action_about:
  36. Toast.makeText(this, "Menu Item about selected", Toast.LENGTH_SHORT)
  37. .show();
  38. break;
  39. case R.id.action_edit:
  40. Toast.makeText(this, "Menu Item edit selected", Toast.LENGTH_SHORT)
  41. .show();
  42. break;
  43. case R.id.action_search:
  44. Toast.makeText(this, "Menu Item search selected",
  45. Toast.LENGTH_SHORT).show();
  46. break;
  47. case R.id.action_help:
  48. Toast.makeText(this, "Menu Item  settings selected",
  49. Toast.LENGTH_SHORT).show();
  50. break;
  51. default:
  52. break;
  53. }
  54. return super.onOptionsItemSelected(item);
  55. }
  56. }

转载自:http://www.cnblogs.com/SharkBin/p/3559213.html

时间: 2024-10-31 00:49:40

[Android] ActionBar 显示overflow (就是后边三个点儿的按钮)的相关文章

【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错

原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮 期间,已经按照官网的教程: Action Bar | Android Developers 去添加代码,增加menu,然后显示在ActionBar中了. 但是遇到的问题是: 对于menu的item,没有指定android:showAsAction

强制ActionBar显示OverFlow按钮(三个点)

关于ActionBar最右这三个点按钮: 正式的名称应该是 overflow menu,在android4.2.2以上的设备是默认出现的,但是android4.1.2的设备不显示,似乎android也没有提供显示的API,所以网上搜索到这个强制显示的方案(亲测可用). 关键代码如下: private void getOverflowMenu() { ViewConfiguration viewConfig = ViewConfiguration.get(this); try { Field ov

Android用surface直接显示yuv数据(三)

本文用Java创建UI并联合JNI层操作surface来直接显示yuv数据(yv12),开发环境为Android 4.4,全志A23平台. package com.example.myyuvviewer; import java.io.File; import java.io.FileInputStream; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import a

Android下强制显示ActionBar的overflow按钮

由于手机硬件情况的不同,在没有物理Menu键的手机上,ActionBar的overflow按钮会有显示不出来的情况,可以通过反射的方式修改ViewConfiguration类中的sHasPermanentMenuKey静态变量的值永远为false,系统就是根据这个变量值来判断手机有没有物理Menu键,代码如下: @Override protected void onCreate(Bundle savedInstanceState) { -- setOverflowShowingAlways();

Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/actionbar.html 限于篇幅的原因,在上篇文章中我们只学习了ActionBar基础部分的知识,那么本篇文章我们将接着上一章的内容继续学习,探究一下ActionBar

Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/actionbar.html Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用

【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/actionbar.html Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用

Android ActionBar应用实战,高仿微信主界面的设计

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对较为深刻的理解了.唯一欠缺的是,前面我们都只是学习了理论知识而已,虽然知识点已经掌握了,但是真正投入到项目实战当中时会不会掉链子还很难说.那么不用担心,本篇文章我就将带领大家一起进入ActionBar的应用实战,将理论和实践完美结合到一起. 如果你还没有看过我的前两篇文章,建议先去阅读一下 Andr

Android ActionBar完全解析

Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中. 一.Action Bar 功能 1 .标识了用户当前操作界面的位置 2. 提供了额外的用户动作 3. 界面导航等功能. 二.使用ActionBar的好处: 它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕. 下面是一张使用ActionBar的界面截图: 其中,[1]是ActionBar的图标,[2]是两个acti