android清单动作栏标志

时间:2015-02-23 00:12:48

标签: android android-actionbar

这很简单但却让我感到悲痛。我希望我的操作栏显示清单中的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属性,则会显示徽标,但由于主活动super.onCreate(savedInstanceState);处的某些非法状态异常,应用程序会立即崩溃。如果我离开主题,则操作栏为空白,并在活动中设置背景颜色。

主题:

<?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>

活动设定背景:

public class MainActivity extends ActionBarActivity {

private ActionBar bar;

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

    }
}

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

2 个答案:

答案 0 :(得分:0)

试试这个并告诉我,如果有效的话。

<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>

修改

只有在您的活动中将actionBar.setDisplayShowHomeEnabled()设置为true时,上述解决方案才有效。

答案 1 :(得分:0)

以下是我修复此问题的方法:

<!-- 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>

在我必须设置的活动中给酒吧充气后:

bar.setDisplayShowHomeEnabled(true);