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