Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序图标不显示在操作栏上_Android_Android Actionbar_Icons_Android Appcompat_Material Design - Fatal编程技术网

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

我按照建立一个新的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);
    }