【问题标题】:How can I add an Action Bar Item during run time如何在运行时添加操作栏项
【发布时间】:2012-04-25 19:58:50
【问题描述】:

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

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

【问题讨论】:

    标签: android android-actionbar actionbarsherlock


    【解决方案1】:

    你可以用这样的代码创建菜单:

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

    【讨论】:

    • 提示:使用onOptionsItemSelected 处理水龙头!
    【解决方案2】:

    你可以维护一个标志来决定你是否需要显示你的按钮

    boolean hasRss = false;
    

    然后,重写 onCreateOptionsMenu(Menu menu) 方法并检查 hasRss 是 true 还是 false。如果为真,请添加您的按钮以执行任何操作。然后,您可以添加您想要始终显示的普通按钮,无论您是否拥有 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 value = true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多