Android操作栏背景颜色

时间:2015-05-31 02:42:56

标签: android android-actionbar

我查看了android文档和其他示例,但仍然无法使我的操作栏样式工作。我在android清单中将我的主题设置为“AppTheme”,但背景颜色不会改变。

这是我的styles.xml:

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

<style name="ActionBarTheme" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#9D0D0D</item>
    <item name="background">#9D0D0D</item>
</style>

我发现我需要定义两次样式,一次使用项目名称“android:background”,另一次使用项目名称“background”。后者用于支持库兼容性。运行应用程序时出现此错误:

Error:(11, 41) Color types not allowed (at 'background' with value '#9D0D0D').

为什么android不允许带有项目名称“background”的颜色,但是它允许带有“android:background”的颜色?还有什么可能是错的吗?

3 个答案:

答案 0 :(得分:1)

试试这段代码:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimaryDark">@color/primaryDarkColorActionBar</item>
        <item name="colorPrimary">@color/primaryColorActionBar</item>
</style>

此外,在最新的appcompat更新(即22.1.1)中不推荐使用ActionBarActivity。所以最好使用AppCompatActivityinstead(如果你还没有使用它)。

答案 1 :(得分:1)

解决方案1: 你可以用Java做到这一点。只需在setContentView之后使用这两行。

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#db1012")));

解决方案2: 您可以使用工具栏。将其添加到您的xml。

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/color_primary"
    app:titleTextAppearance="@style/Toolbar.TitleText"
    android:layout_alignParentTop="true">
</android.support.v7.widget.Toolbar>

这是来自java。

  /**
 * Set toolbar into actionbar.
 */
protected void setupToolbar() {
    if (toolbar == null) {

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setTitle(R.string.back);
        toolbar.setTitleTextColor(Color.WHITE);
        toolbar.setBackgroundColor(Color.RED);
    }
}

答案 2 :(得分:0)

添加到Astrount的答案:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimaryDark">@color/primaryDarkColorActionBar</item>
        <item name="colorPrimary">@color/primaryColorActionBar</item>
</style>

在Gradle配置依赖项中:

dependencies {
    ...
    compile 'com.android.support:design:22.2.0'
}

在您放置工具栏的布局中:

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

</android.support.design.widget.AppBarLayout>

这会自动设置工具栏的样式。确保使用Android SDK Manager更新到最新的支持库SDK。