Android:ActionBar的自定义背景颜色

时间:2015-04-17 19:49:17

标签: android android-actionbar

我已经阅读了很多关于这个问题的帖子,但没有一个有帮助。有人可以解释为什么我的项目不会改变我的Action Bar的背景颜色吗?文档说通过

包含支持库兼容性
<item name="background">@drawable/actionbar_background</item>, 

但是,我不知道如何为drawable指定一种颜色。将#57d1a3置于此处会出错。我甚至不确定这会解决我的问题。

MainActivity:

public class MainActivity extends ActionBarActivity {

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


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

清单:

<?xml version="1.0" encoding="utf-8"?>

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

主菜单:

<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">
    <item android:id="@+id/action_settings" android:title="@string/action_settings"
    android:orderInCategory="100" app:showAsAction="never" />
</menu>

最后,styles.xml:

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

<!-- ActionBar styles -->
<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#57d1a3</item>
</style>
</resources>

3 个答案:

答案 0 :(得分:0)

尝试在styles.xml中更改代码:

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<!-- the theme applied to the application or activity -->
  <style name="CustomActionBarTheme"
      parent="@style/Theme.AppCompat.Light">
      <item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
  </style>

<!-- ActionBar styles -->
  <style name="MyActionBar"
      parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
      <item name="android:background" tools:ignore="NewApi">#57d1a3</item>
       <item name="background" tools:ignore="NewApi">@color/myColor</item>
  </style>
</resources>

答案 1 :(得分:0)

这似乎对我有用

<resources>
    <style name="MyTheme" parent="@android:style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar" parent="@android:style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:background">#FF0000</item>
    </style>
</resources>

你可以像这样做一个简单的可绘制

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid android:color="#YOUR_OWN_COLOR"/> 
</shape>

答案 2 :(得分:0)

由于您使用AppCompat进行主题化,答案非常简单。不要使用操作栏,而是使用ToolBar。下面是如何在XML中定义工具栏,并在您的活动中使用颜色进行设置的示例。

toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fb_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize" />

YourActivity.java:

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

    Toolbar tb = (Toolbar) findViewById(R.id.fb_toolbar);
    setSupportActionBar(tb);

    //Parse a color with any hex code
    tb.setBackgroundColor(Color.parseColor("#FFFFFF"));
    //Set title
    tb.setTitle("Your title");
}

这应该使工具栏的背景颜色为白色,标题为“您的标题”。

编辑:

这是一个styles.xml的片段,我用于我的一个应用程序。它使用工具栏和导航抽屉,因此可以忽略其中一些。

styles.xml:

<style name="AppThemeNavDrawer" parent="Theme.AppCompat.NoActionBar">
    <item name="colorAccent">#F8F8F8</item>
    <item name="windowActionModeOverlay">true</item>
</style>

<style name="ToolbarCustomIconColor" parent="AppThemeNavDrawer">
    <item name="android:textColorSecondary">#FFFFFF</item>
    <item name="android:activatedBackgroundIndicator">@drawable/drawer_list_selector</item>
</style>