【问题标题】:android manifest action bar logoandroid清单操作栏标志
【发布时间】:2015-02-23 00:12:48
【问题描述】:

这很简单,但它让我很伤心。我希望我的操作栏在清单中显示由 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 的操作栏。

【问题讨论】:

  • 检查过了,没用
  • 不改变背景颜色吗?
  • 是的,但图标没有显示
  • 你确定你在onCreate()方法中写getActionBar().setIcon(R.drawable.ic_launcher);吗?你的应用的minSdkVersion 是什么?
  • 你在使用 appcompat 21 吗?

标签: android android-actionbar


【解决方案1】:

试试这个,如果可行,请告诉我。

<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 时,上述解决方案才有效。

【讨论】:

  • 实现了这个并且活动中的背景被注释掉了,我得到了一个白色的空白操作栏
  • 我刚刚注意到 FooBar 样式的父级是错误的。我已经更新了我的答案,现在试试看,如果您仍然遇到同样的问题,请告诉我。
  • 另外,您的 AppTheme 父级也可能是个问题。我已经更新了父母双方。看起来,它现在应该可以工作了。
  • 我刚刚更新了三个代码块,问题依旧。我有一个黑条,白色字体字母,没有显示可绘制资源。我只能使用 bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#F7430C"))); 设置背景颜色在活动中
  • 我更新了我的答案,先尝试一下,如果它不起作用,请通读这个 - stackoverflow.com/questions/26642378/…。这可能对您有所帮助。
【解决方案2】:

这是我解决这个问题的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多