android 清单操作栏徽标

android manifest action bar logo

这很简单,但一直让我感到悲伤。我希望我的操作栏显示清单中 android:logo 指定的 @drawable 资源:

    <application
            android:allowBackup="true"
            android:label="@string/app_name"
            android:icon="@drawable/logo">
        <activity
            android:name=".MainActivity"
            android:theme="@style/CustomActionBarTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

如果我删除 android:theme 属性,徽标会出现,但由于主 activity 中 super.onCreate(savedInstanceState); 处的某些非法状态异常,应用程序会立即崩溃。如果我离开主题,操作栏为空白,背景颜色设置在 activity.

主题:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
        parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

<!-- ActionBar styles -->
<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:icon">@drawable/logo</item>
    <item name="android:background">#F7430C</item>
</style>

Activity设置背景:

public class MainActivity extends ActionBarActivity {

private ActionBar bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}

我只需要一个带有徽标和背景颜色#F7430C 的操作栏。

试试这个,如果有效请告诉我。

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:actionBarStyle">@style/FooBar</item>
        <item name="actionBarStyle">@style/FooBar</item>
    </style>

    <!-- Base application theme. -->
    <style name="FooBar"
        parent="Widget.AppCompat.Light.ActionBar">
        <item name="android:icon">@drawable/logo</item>
        <item name="icon">@drawable/logo</item>
        <item name="android:background">#F7430C</item>
        <item name="background">#F7430C</item>

    </style>

</resources>

编辑

只有在 activity.

中将 actionBar.setDisplayShowHomeEnabled() 设置为 true 时,以上解决方案才有效

我是这样解决这个问题的:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:actionBarStyle">@style/FooBar</item>
    <item name="actionBarStyle">@style/FooBar</item>
</style>

<!-- Base application theme. -->
<style name="FooBar"
    parent="Widget.AppCompat.Light.ActionBar">
    <item name="android:icon">@drawable/logo</item>
    <item name="icon">@drawable/logo</item>
    <item name="android:background">#F7430C</item>
    <item name="background">#F7430C</item>

</style>

在 activity 中充气后,我必须设置:

bar.setDisplayShowHomeEnabled(true);