我想要的只是我在活动名称旁边的清单(ic_launcher.png)中指定的徽标。它显示为启动器的图标,但不显示在菜单中。我已将徽标和图标属性指向清单中的这一个图像。我在OnCreateOptionMenu中使用getMenuInflater()来填充屏幕顶部的菜单。这一直很好。我进行了设置,以便用户可以单击并浏览应用程序的不同活动。显示应用程序的名称,但该栏中没有图标。
我的清单上有徽标:
<application
android:allowBackup="true"
android:logo="@mipmap/ic_launcher"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
当我将此代码置于启用状态时,程序崩溃。为什么呢?
ActionBar actionBar= getActionBar();
actionBar.setDisplayUseLogoEnabled(true);
On android's own developer site它说:
使用徽标而非图标
默认情况下,系统会使用操作栏中的应用程序图标, 由or中的icon属性指定 元件。但是,如果您还指定了logo属性,那么 操作栏使用徽标图像而不是图标。
我也尝试使用相同的结果直接运行它:
getActionBar().setDisplayUseLogoEnabled(true);
崩溃:
Caused by: java.lang.NullPointerException
at .MainActivity.onCreate(MainActivity.java:33)
它指的是上述陈述。
我也尝试过:
getSupportActionBar().setDisplayUseLogoEnabled(true);
该应用程序不会因此而崩溃,但没有徽标。
我有Theme.AppCompat.Light.DarkActionBar
作为我的应用主题,我相信这会占用我的图标。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
我正在延长ActionBarActivity
并夸大菜单getMenuInflater().inflate(R.menu.menu_main, menu);
我正在扩展ActionBarActivity。
答案 0 :(得分:1)
这个问题很可能是因为您使用的是21. +或22. +版本的支持库。从Lollipop开始,不鼓励使用ActionBar
中的app徽标,最新版本的支持库反映了这一变化。
如果您仍希望在ActionBar
中使用应用徽标,则需要在布局中添加Toolbar
视图(有关此视图的更多信息,请here)并使用其中一种setLogo()
方法:first或second。
答案 1 :(得分:0)
我还建议您使用 android:icon =&#34; @ drawable / ic_launcher&#34; 代替。(尝试 @drawable )
如果它不起作用,请尝试getActionBar().setDisplayShowHomeEnabled(true);
(应在setContentView(R.layout.activity_main);
之前致电)
顺便说一下,如果你想为每个不同的Activity指定一个图标,你也可以在Activity中设置 android:logo =&#34; @ drawable / YOUR_ICON&#34;
希望它有效
答案 2 :(得分:0)
试试这个......
<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="background">@color/mainColor500</item>
<item name="logo">@drawable/actionbar_logo</item>
<item name="displayOptions">useLogo|showHome</item>
</style>
答案 3 :(得分:0)
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayUseLogoEnabled(true);
答案 4 :(得分:0)
根据Android blog,mipmap
文件夹用于应用程序图标,但不是说应用程序徽标也可以。所以我想你最好从drawable文件夹中设置logo:
<application
android:allowBackup="true"
android:logo="@drawable/ic_launcher"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
希望这有帮助!
答案 5 :(得分:0)
您的代码存在多个问题。
由于您正在使用ActionBarActivity和AppCompat,因此您必须了解使用ActionBarActivity时它究竟意味着什么。
您尚未发布您的代码,因此不清楚您是否使用工具栏或ActionBar(ActionBar已弃用,如果您仍在使用,则不应该使用。)
如果您已经在使用工具栏,则可以像这样设置图标。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); toolbar.setLogo(R.drawable.icon_here); }
如果您没有使用工具栏,请先在主题中设置这些行。
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<!-- following two lines -->
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
然后在您的活动布局文件中添加顶部的工具栏。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
>
答案 6 :(得分:-1)
将android:logo="@drawable/...."
添加到清单文件的“应用程序”部分。
android:logo 整个应用程序的徽标,以及活动的默认徽标。
此属性必须设置为对包含图像的可绘制资源的引用(例如&#34; @ drawable / logo&#34;)。没有默认徽标。