2012-07-28 149 views
7

我目前正在为我的应用程序实施主题支持,其中的一部分正在更改操作栏应用程序图标。当选择Holo Light时,我想使用黑色图标。除了设置操作栏应用程序图标的部分之外,所有操作都在该方法中完成。即时尝试使用的代码是:更改操作栏图标

getActionBar(); 
ActionBar.setIcon(R.drawable.my_icon); 

“这里没有这样的引用可用”是我得到的错误。这应该如何正确完成?

顺便说一句,我的minSdkVersion是14,所以没有行动酒吧sherlock的东西。

回答

18
getActionBar(); 

你把操作栏扔到那里。 getActionBar()返回ActionBar的实例,然后您需要调用setIcon()。像这样:

ActionBar actionBar = getActionBar(); 
actionBar.setIcon(R.drawable.my_icon); 
+4

API级别14及更高版本支持'setIcon'。您也可以在清单文件中设置ActionBar徽标,如下所述:http://stackoverflow.com/a/6351736/1182823 – 2014-04-22 17:02:29

+0

当使用支持的库v7,我使用getSupportActionBar()时,此解决方案不起作用。 - 任何建议?谢谢 – 2015-05-22 04:26:14

0

您需要在res/下将您要引用的绘图文件添加到drawable/文件夹中。

编辑:在您的Android安装文件夹中有很多可用的图像。你可以在那里找到它。

+0

我已经添加了图标,那不是问题。 Autocompleate可以找到我的图标没有任何问题。无论我引用哪些我感兴趣的drawable,我都会得到同样的错误。我试图故意拼错我的drawable资源,我得到了同样的错误,但没有将“setIcon”代码标记为红色,拼错的drawable标记为红色。这证明我的drawable存在并且我的IDE可以找到它。 – SweSnow 2012-07-28 23:31:07

0

现有的答案是非常正确的。然而,也有一种选择。 一个最小的方法是使用

getActionBar().setIcon(R.drawable.my_icon);

得到您的工作完成的时候了。 :)

技术细节:由于getActionBar()默认返回一个对象,因此您可以直接操作它而不必明确地在一个范围内的对象中接收它。

4

虽然它有点晚,但我认为它可能有用。

从活动内: 对于API级别14或更高:

getActionBar().setIcon(R.drawable.my_icon); 

对于较低API级别我们不得不延长ActionBarActivity然后:

getSupportActionBar().setIcon(R.drawable.my_icon); 

从片段内: API等级14以上:

getActivity().getActionBar().setIcon(R.drawable.my_icon); 

对于低级别的API,我们可以使用(活动必须扩展ActionBarActivity):

((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon); 

而在这两种情况下,我们有设置图标或标志之前调用setDisplayShowHomeEnabled(真)。

((ActionBarActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true); 

((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon); 
0

打电话给setIcon对我来说还不够。

在这之前,我不得不从活动标志的显示切换到活动图标:

actionBar.setDisplayUseLogoEnabled(false); 

对于活动图标和标识之间的差异看Android icon vs logo

0

我使用这个用于我的使用,它为我工作。希望这有助于所有

actionBar.setDisplayHomeAsUpEnabled(true); 
actionBar.setHomeAsUpIndicator(R.drawable.icon); 
0

试试这个

setSupportActionBar(toolbar); 
    if (getSupportActionBar() != null) 
    getSupportActionBar().setIcon(R.drawable.your_icon);