如何在运行时添加一个操作栏项目

如何在运行时添加一个操作栏项目?

我正在使用actionBarSherlock ,并且当事件发生时我需要添加一些button(例如,从RSS获取一些文本)。 我不能依靠一个固定的XML。

  • 使用ActionBarSherlock和新的SupportMapFragment
  • 启用/禁用ActionBar菜单项
  • 是否有可能在Android的操作栏选项卡上有图标?
  • 选项卡在自定义布局膨胀时在操作栏上方显示
  • 如何向工具栏添加溢出菜单?
  • 使用FragmentActivity的getSupportActionBar
  • PreferenceActivity操作栏主页图标将不会返回(不像ET :)
  • 三星Galaxy S4未对准Actionbar图标
  • 你可以像这样在代码中创build菜单:

     /*************************************/ /* Create the actionbar options menu */ /*************************************/ @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "History").setIcon(R.drawable.ic_menu_recent_history) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); menu.add(0, 1, 0, "Settings").setIcon(R.drawable.ic_menu_manage) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); return true; } 

    里面检查一个布尔值。

    您将需要调用supportInvalidateOptionsMenu()来重新创build菜单。

    您可以维护一个标志,确定您是否需要显示您的button

     boolean hasRss = false; 

    然后,重写方法onCreateOptionsMenu(菜单菜单),并检查hasRss是否为true或false。 如果为true,则添加button来执行任何操作。 然后,您可以添加您想要始终显示的常规button,无论您是否拥有RSS

      @Override public boolean onCreateOptionsMenu(Menu menu) { if (hasRss) { menu.add(Menu.NONE, 0, Menu.NONE, "View RSS").setIcon(R.drawable.ic_menu_view) .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } menu.add(Menu.NONE, 1, Menu.NONE, "Normal button that is always there").setIcon(R.drawable.ic_menu_button) .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } 

    你必须设置你的hasRss值= true,只要你检索你的值,并调用invalidateOptionsMenu(); 重新加载操作栏菜单项