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

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

我正在使用actionBarSherlock ,我需要在事件发生时添加一些按钮(例如,从RSS获取一些文本)。 我不能依赖固定的xml。

  • Android操作栏菜单项,actionLayout无法正常工作
  • 如何更改Selected Tab的颜色
  • Android:以编程方式更改整个应用布局方向
  • Android Action Bar三点不显示
  • 如何在设备上使用Android> 4.0和硬件button在动作溢出菜单中设置文本样式?
  • 如何使Action Bar SearchView填充整个操作栏?
  • Android状态栏与ActionBar重叠
  • onCreateOptionsMenu在JB 4.2上的onResume之后调用
  • 您可以使用以下代码创建菜单:

     /*************************************/ /* 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()来重新创建菜单。

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

     boolean hasRss = false; 

    然后,重写方法onCreateOptionsMenu(菜单菜单)并检查hasRss是true还是false。 如果为true,请添加按钮以执行任何操作。 然后,无论您是否拥有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); } 

    每当检索到值并调用invalidateOptionsMenu();时,您必须设置hasRss值= true invalidateOptionsMenu(); 重新加载操作栏菜单项