更改操作栏图标

时间:2012-07-28 23:15:23

标签: java android android-actionbar icons themes

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

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

“这里没有这样的参考”是我得到的错误。该如何正确完成?

顺便说一句,minSdkVersion 14是{{1}},所以Sherlock没有采取行动。

7 个答案:

答案 0 :(得分:19)

getActionBar();

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

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

答案 1 :(得分:6)

虽然它的答案有点迟,但我认为它可能有用。

来自活动内部 对于API级别14或更高级别:

mentor

对于较低的API级别,我们必须扩展ActionBarActivity,然后:

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

从片段内部开始: 对于API级别14或更高级别:

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

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

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

在这两种情况下,我们必须在设置图标或徽标之前调用setDisplayShowHomeEnabled(true)。

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

答案 2 :(得分:0)

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

编辑:在您的Android安装文件夹中,有很多库存图片可供使用。你可以在那里找到它。

答案 3 :(得分:0)

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

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

让你的工作马上完成。 :)

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

答案 4 :(得分:0)

致电setIcon对我来说还不够。

在此之前,我必须将显示从活动徽标切换到活动图标:

actionBar.setDisplayUseLogoEnabled(false);

有关活动图标和徽标之间的差异,请参阅Android icon vs logo

答案 5 :(得分:0)

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

Exception

答案 6 :(得分:0)

试试这个

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