アプリの設定にカラーピッカー設定を追加して、ユーザーがActionBar(使用しているActionBarSherlock)の背景色を選択できるようにしました。理想的には、ユーザーにアプリを再起動させずに色を変更したいと思います。これはonResume、すべてのActivityとで色を変更するコードを追加することを意味すると思いFragmentます。ただし、最初にアクティビティを押したときに色の変更は機能しますが、デバイスの戻るボタンを使用するか、ActionBarそれ自体を使用してアクティビティに戻ると、色が設定されていないように見え、透明になります。
これは、背景色を設定するために使用しているコードです。私はそれに追加してみonCreateましたonResume:
public class MyActivity extends SherlockActivity {
@Override
public void onCreate(final Bundle icicle)
{
super.onCreate(icicle);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(PreferenceManager.getDefaultSharedPreferences(this).getInt("app_color", getResources().getColor(R.color.app_color))));
}
@Override
public void onResume()
{
super.onResume();
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(PreferenceManager.getDefaultSharedPreferences(this).getInt("app_color", getResources().getColor(R.color.app_color))));
}
}
app_colorはカラーピッカープリファレンスの名前であり、colors値ファイルに保存されているデフォルトの色もあります。TextView同じ問題がなく、色が保持されているフッターもあります。