8

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

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

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

顺便说一句,我minSdkVersion14Sherlock 没有动作吧。

4

7 回答 7

20
getActionBar();

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

ActionBar actionBar = getActionBar();
actionBar.setIcon(R.drawable.my_icon);
于 2012-07-28T23:32:00.947 回答
6

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

从活动内部: 对于 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(true)。

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

((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon);
于 2015-05-11T05:02:42.017 回答
2

我正在使用它,它对我有用。希望这对大家有帮助

actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.icon);
于 2016-04-07T07:49:41.783 回答
0

现有的答案是非常正确的。然而,还有一个替代方案。一种最小的方法是使用

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

Gets your work right away。:)

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

于 2014-05-25T10:15:39.420 回答
0

您需要将要引用的可绘制对象添加drawable/res/.

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

于 2012-07-28T23:20:31.153 回答
0

打电话给setIcon我是不够的。

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

actionBar.setDisplayUseLogoEnabled(false);

有关活动图标和徽标之间的区别,请参阅Android 图标与徽标

于 2015-06-06T09:48:38.323 回答
0

尝试这个

    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null)
    getSupportActionBar().setIcon(R.drawable.your_icon);
于 2018-01-22T08:19:02.443 回答