Android 应用程序图标不显示在操作栏上
我按照建立一个新的android项目的指示去做,我得到了一个可以运行的项目,除了操作栏的问题。问题是应用程序图标没有显示在操作栏上的应用程序标题旁边。我使用以下配置创建了项目:Android 应用程序图标不显示在操作栏上,android,android-actionbar,icons,android-appcompat,material-design,Android,Android Actionbar,Icons,Android Appcompat,Material Design,我按照建立一个新的android项目的指示去做,我得到了一个可以运行的项目,除了操作栏的问题。问题是应用程序图标没有显示在操作栏上的应用程序标题旁边。我使用以下配置创建了项目: 所需的最低SDK:API 8:Android 2.2(Froyo) 目标SDK:API 21:Android 4.X(L预览版) 使用:API 21:Android 4.X(L预览)编译 主题:带有暗色操作条的全息灯(Eclipse设置了相应的appcompat主题) Android支持库21.0.1 Android
- 所需的最低SDK:API 8:Android 2.2(Froyo)
- 目标SDK:API 21:Android 4.X(L预览版)
- 使用:API 21:Android 4.X(L预览)编译
- 主题:带有暗色操作条的全息灯(Eclipse设置了相应的appcompat主题)
- Android支持库21.0.1
- Android SDK构建工具21.1.1
因为我的最小sdk是api 8,它不支持操作栏,所以该项目包括一个
appcompat_v7库
,以允许使用操作栏功能。如果我将最小sdk设置为api 14(android 4.0)或更高版本,则项目不包括appcompat_v7库
,并且应用程序图标也成功显示。但我需要我的应用程序支持旧的安卓操作系统,低至api 8。那么我应该怎么做来解决这个问题呢?非常感谢你们的关注
附言:我在windows、mac、eclipse和android studio上完成了上述任务,得到了相同的结果。您使用的是
AppCompat
Version21+,这是正常的
操作栏遵循材质设计指南并使用。
正如你所看到的:
使用应用程序图标加标题作为标准布局是非常必要的
不鼓励在API 21设备和更新版本上使用
如果您想要应用程序图标(但我不鼓励),可以使用方法setLogo()
大概是这样的:
ActionBar actionBar = getSupportActionBar();
actionBar.setLogo(R.drawable.my_logo);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
属性徽标仅用于API级别11及以上(当前最小值为8),我也对这个问题感到困惑,也许谷歌只是不想在材质设计上显示图标,当最小sdk设置为14或更高且低于21时,它使用holo主题,它有一个图标,但我认为appcompat样式更像材质设计,也许google只是忘记了修改holo主题请确保在manifest.xml文件中的应用程序标记中将图标设置为:
android:icon="@drawable/launcher_icon"
然后在onCreate方法中插入以下行:
ActionBar ab =getSupportActionBar();
ab.setDisplayShowHomeEnabled(true);
ab.setIcon(R.drawable.launcher_icon);
当您使用support library修订版21时,会出现此问题 使用: 它对我有用,或者你可以使用工具栏。工具栏是在应用程序布局中使用的动作栏的泛化 在现代安卓UI中,开发人员应该更多地依赖于工具栏的视觉独特配色方案,而不是应用程序图标。在API 21设备和更新版本上,不鼓励将应用程序图标加标题用作标准布局 参考:在Style.xml中
<style name="MyTheme_ActionBar" parent="@style/Theme.AppCompat.Light">
<item name="icon">@drawable/actionbar_logo</item>
</style>
这是一个常见的“问题”。在拔出头发之前,请确保您正在使用:
import android.support.v7.app.ActionBar; //or the v4, haven't tried with that though
而不是:
import android.app.ActionBar;
然后:
ActionBar actionBar;
actionBar = getSupportActionBar();
而不是:
actionBar=getActionBar()代码>
最后:
if (actionBar != null) {
// enabling action bar app icon and behaving it as toggle button
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setIcon(R.drawable.your_icon);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
@安德鲁·巴伯,我的问题很清楚,我给出了复制它的配置。这是一个空白的android项目,上面列出了我的配置,没有涉及单行代码,也不需要调试帮助,因为根本没有错误。它只是在操作栏上缺少应用程序图标。你为什么要结束这个问题?这怎么可能不够清楚?我仍然认为它需要更多的信息,但在你添加的信息上(你应该添加到问题中,这也会“撞”它),我会继续重新打开。API21是android 5,而不是4.x。还有哪个版本的appcompat?您使用的是Holo主题还是appcompat主题?发布更多细节。@Gabriele Mariotti,API 21确实是android 5.0。但是eclipse ADT插件只提供“API 21:android 4.X(L预览)”供我选择,这也让我有些困惑。我正在使用最新的appcompat-v7(Android支持库21.0.1)和其中的appcompat主题,这两个主题都由eclipse自动包含并配置到项目中。@Gabriele Mariotti,我尝试在windows、mac、eclipse和Android studio上做同样的事情,得到了同样的结果。你能用我的配置创建一个新的android项目来看看这个问题是否也会发生吗?我已经尝试过setLogo,但仍然不起作用。下面是我的代码:@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar ab=getSupportActionBar();ab.setLogo(R.drawable.ic_launcher);}
如果我将最小sdk设置为api 14(android 4.0)或更高版本,那么appcompat将不会被包括在内,应用程序图标将成功显示,而没有任何相应的代码,如setLogo。没有appcompat,您将使用标准的ActionBar(带有Holo Thme),所以这很正常。但是为什么setLogo()方法不能与appcompat一起工作?这可能是appcompat 21的一个bug吗?下面是另一个被这个问题困扰的人。[(max2817)但现在至少我知道它是正常的,并且是你的答案推荐的。也许在更多的人加入棒棒糖之后,我可以找到最终的答案。是的,他们默认隐藏图标没有问题,但至少他们应该为我们提供一种手动显示图标的方式。谢谢。一个问题,它是向后/向前兼容的吗?为什么我们必须将它定义为两个p蕾丝??这对我很有效。谢谢。应该有一种更简单的方法来保存应用程序的风格元素。
ActionBar actionBar;
actionBar = getSupportActionBar();
if (actionBar != null) {
// enabling action bar app icon and behaving it as toggle button
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setIcon(R.drawable.your_icon);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}