如何在活动中更改操作栏和状态栏颜色?

时间:2018-02-22 14:16:00

标签: java android xml android-actionbar

我想以编程方式仅在一个活动上更改操作栏和状态栏的颜色,具体取决于其状态,绿色表示go,红色表示停止。我想保持系统范围的橙色主题,只有红色或绿色取决于活动内部的结果,使用if语句。
怎么可能这样做?

2 个答案:

答案 0 :(得分:0)

如果我理解正确你想从java代码改变..当你调用if时尝试使用这个方法:

import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

        changeColor(R.color.red);
    }


    public void changeColor(int resourseColor) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().setStatusBarColor(ContextCompat.getColor(getApplicationContext(), resourseColor));
        }

        ActionBar bar = getSupportActionBar();
        bar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(resourseColor)));

    }

}

答案 1 :(得分:0)

您可以通过定义活动的自定义主题来完成此操作。首先,您需要在 styles.xml 路径中创建res/values/文件。

styles.xml

<resources>
    <style name="MyCustomTheme" parent="Theme.AppCompat.Light">
        <item name="android:statusBarColor">@color/color_primary</item>
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@color/color_primary</item>
    </style>
</resources>  

然后在你的AndroidManifest.xml写:

<activity 
       android:name=".MyActivity"
       android:theme="@style/MyCustomTheme"/>  

或在您的活动中:

setTheme(android.R.style.MyCustomTheme);