启动器图标未出现在操作栏中
Launcher icon not appearing in Action Bar
我的启动器图标没有出现在我的 ActionBar 中,尽管设置了 android:icon
属性(并且当我安装应用程序时启动器出现在我的主屏幕上)。注意:我正在使用片段,它们也提供操作项——但这不应该影响主页图标集,对吗?
这是我的清单中的一些相关代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://schemas.android.com/apk/res/android"
package="com.mywebsite.myapp">
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
...etc...
</activity>
</application>
</manifest>
以及来自 styles.xml 的代码:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
来自 menu_main.xml 的代码,作为衡量标准:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<!-- Note: my fragments also contribute action items. -->
<item
android:id="@+id/action_about"
android:orderInCategory="100"
android:title="@string/menu_item_about"
app:showAsAction="never" />
</menu>
还有一些代码来自 MainActivity.java:
package com.mywebsite.myapp;
import android.support.v7.app.ActionBarActivity;
...etc...
public class MainActivity extends ActionBarActivity {
...lots of code; let me know if you need anything...
// possibly relevant
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMeunInflater().inflate(R.menu.menu_main, menu);
}
}
编辑: 这个问题与版主链接的问题不重复。那个问题的答案并没有解决我的问题;但是,我在下面标记为正确的答案确实如此。具体来说,调用 setLogo(int)
并不能解决我的问题。然而,调用 actionBar.setDisplayShowHomeEnabled(true);
, 确实 解决了我的问题。看?不同的问题。
试试这个:getActivity().getActionBar().setDisplayShowHomeEnabled(true);
在片段的 onCreate
确保显示它:
actionBar.setDisplayShowHomeEnabled(true);
然后,请注意 setIcon()
和 setLogo()
仅在您相应地设置 displayOptions
后才有效。您可以只使用:
actionBar.setDisplayOptions(ActionBar.DISPLAY_USE_LOGO);
因此您的 ActionBar
将采用您的 AndroidManifest.xml
的图标。或者:
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);
我的启动器图标没有出现在我的 ActionBar 中,尽管设置了 android:icon
属性(并且当我安装应用程序时启动器出现在我的主屏幕上)。注意:我正在使用片段,它们也提供操作项——但这不应该影响主页图标集,对吗?
这是我的清单中的一些相关代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://schemas.android.com/apk/res/android"
package="com.mywebsite.myapp">
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
...etc...
</activity>
</application>
</manifest>
以及来自 styles.xml 的代码:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
来自 menu_main.xml 的代码,作为衡量标准:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<!-- Note: my fragments also contribute action items. -->
<item
android:id="@+id/action_about"
android:orderInCategory="100"
android:title="@string/menu_item_about"
app:showAsAction="never" />
</menu>
还有一些代码来自 MainActivity.java:
package com.mywebsite.myapp;
import android.support.v7.app.ActionBarActivity;
...etc...
public class MainActivity extends ActionBarActivity {
...lots of code; let me know if you need anything...
// possibly relevant
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMeunInflater().inflate(R.menu.menu_main, menu);
}
}
编辑: 这个问题与版主链接的问题不重复。那个问题的答案并没有解决我的问题;但是,我在下面标记为正确的答案确实如此。具体来说,调用 setLogo(int)
并不能解决我的问题。然而,调用 actionBar.setDisplayShowHomeEnabled(true);
, 确实 解决了我的问题。看?不同的问题。
试试这个:getActivity().getActionBar().setDisplayShowHomeEnabled(true);
在片段的 onCreate
确保显示它:
actionBar.setDisplayShowHomeEnabled(true);
然后,请注意 setIcon()
和 setLogo()
仅在您相应地设置 displayOptions
后才有效。您可以只使用:
actionBar.setDisplayOptions(ActionBar.DISPLAY_USE_LOGO);
因此您的 ActionBar
将采用您的 AndroidManifest.xml
的图标。或者:
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);