Android在调用onResume时更改ActionBar颜色

时间:2015-04-10 10:16:59

标签: android android-actionbar

我在偏好设置屏幕中有一个选项可以更改ActionBar背景颜色。

它可以工作,但是通过更改颜色,我必须关闭并重新打开应用程序以查看更改。

我必须将ActionBar颜色更改代码放在onResume中。但onResume没有调用onBackPressed

这是我的代码:

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

5 个答案:

答案 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)

赛巴尼给了你一个很好的答案。如果你想根据你的喜好以编程方式改变颜色,你也可以在 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")));

答案 4 :(得分:0)

如果要从PreferenceScreen更改操作栏颜色,则还应该更新此操作栏的更改颜色值,例如SharedPreferences或某个变量。使用getter / setter在onResume方法中使用此变量设置操作栏颜色。