簡體   English   中英

Android在調用onResume時更改ActionBar顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM