Android 5中的操作栏应用程序图标丢失

10

使用Android 5 SDK和相关的appcompat重新构建了我的应用程序。

似乎运行良好,但我的应用程序图标不再显示在左上角。打开导航抽屉的图标存在,但没有应用程序图标。

有什么方法可以修复这个问题吗?


2
https://dev59.com/3oTba4cB1Zd3GeqP636S#26508114 - CommonsWare
根据文档,您不应该在新设备上看到此图标 - 请查看我的答案。 - Booger
4个回答

15

在onCreate中使用以下代码:

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

3
我注意到 Android Studio 默认创建的项目在操作栏中缺少图标。这里是我如何解决的方法。
免责声明:此解决方案将放弃 Material 主题,而选择较旧的 JellyBean/Kitkat 样式。
首先,将 styles.xml 中的主题设置更改为以下内容:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

到这个:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

现在将所有的Activity都改为继承自android.app.Activity而不是android.support.v7.app.ActionBarActivity。即:
将这个:
import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActivityBarActivity {

变为:

import android.app.Activity;

public class MainActivity extends Activity {

做完这些后的结果是,应用程序将拥有更常见于Jelly Bean和Kitkat的Holo主题。

抱歉,这是一个糟糕的建议。你将"Material"主题替换为"Holo"主题,这会对你的应用整体外观产生负面影响。 - Booger
@Booger - 很抱歉你觉得我的回答不令人满意。但我对采用JellyBean/Kitkat的“Holo”风格会带来“负面影响”提出异议。去年我发布了一款没有Material风格的JellyBean/Kitkat应用程序,我并没有遇到任何问题。 - selbie
@Booger - 我在 Android 开发方面休息了几个月后,想要回归,但使用最新工具。我通过阅读《Big Nerd Ranch》书中的教程进行了刷新课程。问题在于,在跟随 BNRG 书中的代码示例时,使用 Android Studio 变得困难。Material 主题与书中不同,并且 support.v7 Activity 需要编写不同于书中的代码。因此,仅仅为了从相同的书中重新学习,我需要保留 Holo。 - selbie
问题在于应用程序的外观。通常,您会希望使用最新的UI元素(这些元素在Material和SupportLib中提供)。通过坚持“旧”风格,您正在绕过所有这些。这将完美地工作(没有错误等),但看起来不够现代,并且无法利用最新的Material设计概念。Holo发布已有5年之久,您应该使用Material。 - Booger
@Booger - "应用程序的外观"和"应该使用Material"都是意见。这些意见并不错,但也不是必需品。我回答的目的不是让人们远离Material,而是帮助那些从旧工具链过来的人看到他们习惯得到的相同行为。我怀疑我们在这个问题上已经到了僵局。 - selbie
我根据你的解释撤销了我的踩票,但仍然认为这不是一个好的建议(“holo”对于当前的Android来说不是一个好的方法)。祝和平,并感谢你的对话。 - Booger

2
确保继承ActionBarActivity而不是Activity。并添加以下代码:
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

2
在API 5+应用程序中不应该有图标。默认情况下,它不会显示出来(这是首选行为)。工具栏文档明确指出了这一点:“在现代Android UI中,开发人员应更多地倾向于使用视觉上独特的颜色方案来设计工具栏,而不是使用应用程序图标和标题作为标准布局。在API 21设备及更高版本上不建议使用应用程序图标加标题的标准布局。”(原文如此) http://developer.android.com/reference/android/widget/Toolbar.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接