2015-04-10 2 views
0

У меня есть опция на моем экране предпочтений для изменения цвета фона ActionBar.Android меняется цвет ActionBar, когда onResume называется

Это работает, но, изменив цвет, я должен закрыть и снова открыть приложение, чтобы увидеть изменения.

Я должен положить ActionBar код изменения цвета в onResume. Но onResume не вызывается onBackPressed.

Вот мой код:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_chat); 
    Misc.setActionBarColor(getActionBar(), null); 
} 

ответ

0

Вы можете определить цвет ActionBar (и других вещей), создав собственный стиль:

Просто редактировать Рез/значение/файл styles.xml вашего Android-проекта.

Например, как это:

<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.

Вы также можете установить цвет для ActionBar так:

ActionBar actionBar = getActionBar(); 
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); 

Для получения дополнительной информации https://developer.android.com/training/basics/actionbar/styling.html

+1

Цвет моей панели действий меняется, но не возвращается к активности. – Azcaq

+1

Сохраните выбранный цвет и обновите цвет, основываясь на статусе предпочтения. Вы можете поместить этот код в onResume() Activity –

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); 
} 
+0

, это хороший ответ –

+0

@ScionofIkshvaku да, просто простой слушатель. –

+0

@SaiPhani Хороший ответ –

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); 
0

Sai Phani дал вам хороший ответ. Если вы хотите изменить цвет программно depeding от ваших предпочтений, вы можете также поместить что-то подобное в 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"))); 
0

Если вы изменение цвета панели действий из PreferenceScreen, тогда вы также должны обновить это измененное значение цвета панели действий где-то вроде SharedPreferences или некоторой переменной. Используйте функцию getter/setter для настройки цветов панели действий с использованием этой переменной в методе onResume.

Смежные вопросы