我在偏好设置屏幕中有一个选项可以更改ActionBar
背景颜色。
它可以工作,但是通过更改颜色,我必须关闭并重新打开应用程序以查看更改。
我必须将ActionBar
颜色更改代码放在onResume
中。但onResume
没有调用onBackPressed
。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
Misc.setActionBarColor(getActionBar(), null);
}
答案 0 :(得分:1)
private SharedPreferences settings;
private OnSharedPreferenceChangeListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
settings = PreferenceManager.getDefaultSharedPreferences(this);
listener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
//Set Your action bar color here.
//based on arguments
//String key == android:key="pref_key"(where this is your PreferenceView)
}
};
settings.registerOnSharedPreferenceChangeListener(listener);
}
答案 1 :(得分:0)
您可以通过创建自定义样式来定义ActionBar(以及其他内容)的颜色:
只需编辑Android项目的res / values / styles.xml文件即可。
例如:
<resources>
<style name="MyCustomTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBarTheme</item>
</style>
<style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">ANY_HEX_COLOR_CODE</item>
</style>
</resources>
然后设置&#34; MyCustomTheme&#34;作为包含ActionBar的Activity的主题。
你也可以像这样设置ActionBar的颜色:
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED));
了解更多信息https://developer.android.com/training/basics/actionbar/styling.html
答案 2 :(得分:0)
您可以像这样更改操作栏颜色: How do I change the background color of the ActionBar of an ActionBarActivity using XML?
如果你想重新启动你的活动而不显示任何动画,你可以这样做:
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
overridePendingTransition(0, 0);
答案 3 :(得分:0)
SharedPreferences mysettings = PreferenceManager.getDefaultSharedPreferences(this);
String st1 = mysettings.getString("COLOR_KEY", "default Value here");
if(st1.equals("Blue")){ //Blue example
//Change action bar color
//Set new value in your preferences
}
if(st1.equals("Red")){ //Red example
}
通过执行以下操作指定颜色:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
答案 4 :(得分:0)
如果要从PreferenceScreen更改操作栏颜色,则还应该更新此操作栏的更改颜色值,例如SharedPreferences或某个变量。使用getter / setter在onResume方法中使用此变量设置操作栏颜色。