2013-02-28 66 views
1

我想在操作栏的最右角显示一个图像。我希望这个图像在运行时根据一些代码检查来设置。有人能指导我如何去解决它吗?Android操作栏图片

谢谢

+0

从onCreateOptionsMenu()溢出菜单是显示图像/图标的一种方式,但是不能在运行时完成我想。 – learner 2013-02-28 14:57:51

回答

2

使用此。此代码在右上角添加一个刷新按钮,名为R.drawable.refresh。将显示图标只有在有足够的空间,否则将显示它的菜单

private Menu myMenu 

    public void changeMenu (int resource) { 

    myMenu.getItem(0).setIcon(resource); //here resource is your R.drawable.insertid 

    } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    // getMenuInflater().inflate(R.menu.activity_main, menu); 
      myMenu = menu; 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.activity_main, menu); 
    menu.add("Refresh").setIcon(R.drawable.refresh) 
      .setOnMenuItemClickListener(new OnMenuItemClickListener() { 

       @Override 
       public boolean onMenuItemClick(MenuItem item) { 
              doStuff(); 
        return false; 
       } 
      }).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    return super.onCreateOptionsMenu(menu); 
} 

只叫它changeMenu无论你想更改代码,并通过绘制ID。

编辑:将其粘贴到您的活动并添加要求您的导入。你应该根据你想要的添加你自己的drawable。请记住,图标测量

  • MDPI:32×32
  • 华电国际:48×48
  • xhdpi:64×64
+0

但是,这将修复操作栏上的一个预定义图像。正如我所说我想要在运行时基于某些代码加载图像(要放置的图像因代码而异) – learner 2013-02-28 15:04:14

+0

您仍然可以使用此代码执行此操作,只需将菜单与代码变量分开,然后将其称为这个“menu.getItem(0).setIcon(图标)”我将编辑我的答案 – Dante 2013-02-28 15:22:38

-1

,如果你想在运行时改变它,你需要做的菜单(在onCreateOptionsMenu)并保存菜单项。像这样

MenuItem changeableMenuItem = menu.add("new Item"); 

现在你可以打电话changeableMenuItem.setIcon更改图标,然后如果你把changeableMenuItem的类,你可以在任何地方类更改图标的字段。

如果您不确定如何制作菜单项,则可以引用Dante的答案。