[英]Android changing ActionBar color when onResume is called
我在“偏好設置”屏幕中可以選擇更改ActionBar
背景顏色。
它可以工作,但是通過更改顏色,我必須關閉並重新打開應用程序才能看到更改。
我必須將ActionBar
顏色更改代碼放在onResume
。 但是onBackPressed
不會調用onResume
。
這是我的代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
Misc.setActionBarColor(getActionBar(), null);
}
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);
}
您可以通過創建自定義樣式來定義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>
然后將“ MyCustomTheme”設置為包含ActionBar的Activity的主題。
您還可以像這樣為ActionBar設置顏色:
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED));
有關更多信息https://developer.android.com/training/basics/actionbar/styling.html
您可以按以下方式更改操作欄顏色: 如何使用XML更改ActionBarActivity的ActionBar的背景顏色?
如果您想在不顯示任何動畫的情況下重新開始活動,可以執行以下操作:
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
overridePendingTransition(0, 0);
Sai Phani給了您一個很好的答案。 如果您想根據喜好通過編程方式更改顏色,還可以在onResume()中放置如下內容:
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")));
如果要從PreferenceScreen更改操作欄顏色,則還應該在某些位置(如SharedPreferences或某些變量)更新此更改的操作欄顏色值。 使用getter / setter在onResume方法中使用此變量設置操作欄顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.