2014-05-09 6 views
1

Я пытаюсь выполнить активность настроек в своем приложении, и мне было интересно, как я могу сделать предпочтение, которое позволит пользователю изменить цвет фона.Изменить цвет фона в настройках

Я уже сделал операцию настройки, и я подумывал сделать подмножество, когда пользователь нажимает кнопку «Цвет», которая показывает различные цвета, которые пользователь может установить (или, что еще лучше, с палитрой с все доступные цвета).

Как я могу это понять?

+1

см это для цветовой палитры http://stackoverflow.com/questions/2442407/android-color-picker – Sripathi

+0

@Sripathi спасибо за ссылку, но я не в состоянии понять его руководства – Solaire

ответ

1

хорошо, если вы уже создали деятельность настройки, это было бы что-то подобное этому

public class NormalSettingsActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.normal_preferences); 
    } 
} 

в настройках XML добавить категорию предпочтения, как этот

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 

    <PreferenceCategory android:title="Background Color Settiongs" > 
     <ListPreference 
      android:defaultValue="#111111" 
      android:entries="@array/colorName" 
      android:entryValues="@array/colorCode" 
      android:key="background_color" 
      android:summary="Set background color of app" 
      android:title="Colors" /> 
    </PreferenceCategory> 
</PreferenceScreen> 

затем в значения папке создать XML так называемые массивы

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="colorName"> 
     <item name="0">Red</item> 
     <item name="1">Black</item> 
     <item name="2">Yellow</item> 
     <item name="3">White</item> 
    </string-array> 
    <string-array name="colorCode"> 
     <item name="0">#ff0000</item> 
     <item name="1">#111111</item> 
     <item name="2">#ffff33</item> 
     <item name="3">#ffffff</item> 
    </string-array> 
</resources> 

то в вашей деятельности просто установите backgroun d цвета с использованием

backgroundLayout.setBackgroundColor(Color.parseColor(mPreferenceManager.getDefaultSharedPreferences().getString("background_color", "#111111"))); 

здесь "background_color" исходит из предпочтений XML (Android: ключ = "background_color")

"# 111111" некоторые цвета по умолчанию, который будет установлен, если не найдено

не забудьте создать глобальную переменную

protected PreferencesManager mPreferenceManager; 

и инициализировать его в OnCreate, так как

mPreferenceManager = PreferencesManager.instance(this); 
+0

я не «Не знаю, как поблагодарить вас, ваш ответ был более чем полным, спасибо вам, очень мух. Я просто хочу указать на то, что окончательная процедура, чтобы сделать подготовительную работу, не работает для меня, так что я сделал это 'RelativeLayout гх = (RelativeLayout) findViewById (R.id.container); \t \t \t \t SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences (this); \t \t int bgc = Color.parseColor (sharedPref.getString ("background_color", "# 000000")); \t \t rl.setBackgroundColor (bgc); ' Проблема в том, что фон не применяется, если я вернусь со стрелкой на экране, из настроек – Solaire

+0

я столкнулся с той же проблемой. трюк здесь заключается в вызове метода backbackground в методе onResume. и поблагодарить меня, вы всегда можете принять мой ответ :-) – Kaustuv

+0

О, верно, ответ был настолько очевиден! Большое вам спасибо, я принимаю его сразу;) – Solaire

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