状态栏的颜色不会随着 Theme.AppCompat.Light 而改变

Status bar's color don't change with Theme.AppCompat.Light

我正在尝试在我的应用程序中使用 Material 设计,并使用浮动操作按钮,我正在使用 appcompat-v7 库。但是,为了使用它,我必须使用主题:"Theme.AppCompat.Light"。而且我无法在应用程序上为 API 22 设置背景颜色。我没兴趣在 API 的 20 或以下

上进行这项工作

在 Android 文档中,它说我只需要在 android:Theme.Material 上使用 colorPrimary 和 colorPrimaryDark https://developer.android.com/intl/pt-br/training/material/theme.html

我的风格是这样的:

<resources>
        <style name="AppTheme" parent="Theme.AppCompat.Light">
            <item name="android:colorPrimary">@color/primary</item>
            <item name="android:statusBarColor">@color/primary</item>
            <item name="android:colorPrimaryDark">@color/primary_dark</item>
            <item name="android:textColorPrimary">@color/primary_text</item>
            <item name="android:textColorSecondary">@color/secondary_text</item>
            <item name="android:colorAccent">@color/accent</item>
            <item name="android:textColor">@color/textColor</item>
        </style>
    </resources>

我的主要活动:

package com.example.rafael.encomendasmaterial.activities;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import com.example.rafael.encomendasmaterial.R;

public class MainActivity extends ActionBarActivity {
    private FloatingActionButton myFAB;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myFAB = (FloatingActionButton) findViewById(R.id.myFAB);
        setTheme(R.style.AppTheme);
        callCadastroEncoemnda();
    }
    public void callCadastroEncoemnda(){
        myFAB.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, CadastroEncomenda.class);
                MainActivity.this.startActivity(intent);
            }
        });
    }

    @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);
    }
}

由于您使用的是支持库,API 7 中不存在的某些属性不应 android 命名空间,因为它们是由库提供的。

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="android:textColorPrimary">@color/primary_text</item>
        <item name="android:textColorSecondary">@color/secondary_text</item>
        <item name="colorAccent">@color/accent</item>
        <item name="android:textColor">@color/textColor</item>
    </style>
</resources>

我忘记在 colorPrimary、colorPrimaryDark 和 colorAccent 之前加上 "android:"。它现在工作了!谢谢

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:textColorPrimary">@color/primary_text</item>
    <item name="android:textColorSecondary">@color/secondary_text</item>
    <item name="android:colorAccent">@color/accent</item>
    <item name="android:textColor">@color/textColor</item>
</style>

在我的例子中,状态栏没有反映,因为我设置了

<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

删除线解决了它