изменить цвет фона предпочтения - PullRequest
51 голосов
/ 23 августа 2010

У меня есть PreferenceCategory, XML-файл, и я определил в нем все настройки, я называю это из класса, который расширяет PreferenceActivity. Я не могу установить фон моего экрана настроек, этот экран отображается с помощью файла XML, показанного ниже. Пожалуйста, обратите внимание, что я уже определил android:background="#041A37", но экран по умолчанию остается цветным: черный.

public class MyPreferenceActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Context mContext=super.getBaseContext();
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.layout.preference);
        //v.setBackgroundColor(Color.rgb(4, 26, 55));
    }
}

preference.xml - это

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

    <PreferenceCategory>
        <com.dropcall.SeekBarPreference
            android:background="#041A37"
            android:defaultValue="5"
            android:key="@string/Interference_Delay"
            android:progressDrawable="@drawable/seekbardrawable"
            android:title="Seconds Delay until intereference" />

        <com.dropcall.SeekBarPreference2
            android:defaultValue="30"
            android:key="@string/Drop_Delay"
            android:progressDrawable="@drawable/seekbardrawable"
            android:title="Seconds delay until drop" />

        <CheckBoxPreference
            android:background="@drawable/state_normal"
            android:defaultValue="true"
            android:key="@string/Drop_Option"
            android:title="Close after call drop" />
        <CheckBoxPreference
            android:background="@drawable/state_normal"
            android:defaultValue="true"
            android:key="@string/Timer_Option"
            android:title="Start timers on launch" />
    </PreferenceCategory>

</PreferenceScreen>

Хотя я установил android:background="#041A37" в каждом файле, фон не превращается в темно-синий или какой-либо другой цвет в этом отношении. Цвет по умолчанию остается черным. Как изменить цвет фона. Пожалуйста, дайте мне знать любые указатели / подсказки, если вы столкнулись с той же проблемой, дайте мне знать, какие изменения вы сделали, чтобы установить цвет фона.

Ответы [ 7 ]

77 голосов
/ 11 мая 2011

Вы можете определить тему, а затем установить ее для вашей PreferenceActivity в манифесте.Ваша тема может затем определить цвет фона или фоновое изображение окна, если вы предпочитаете это.

Манифест:

    <activity android:label="@string/app_label" android:name=".client.PreferencesActivity"
        android:theme="@style/PreferencesTheme">
        <intent-filter>                                
        </intent-filter>
    </activity>

Затем добавьте тему в файл styles.xml

<style name="PreferencesTheme">
    <item name="android:windowBackground">@drawable/background_image</item>
    <item name="android:background">#FFEAEAEA</item>
</style>

В приведенном выше фрагменте заданы как цвет фона, так и фоновое изображение, чтобы показать, как это сделать.

44 голосов
/ 25 августа 2010

Это сработало для меня

getListView().setBackgroundColor(Color.TRANSPARENT);

getListView().setCacheColorHint(Color.TRANSPARENT);

getListView().setBackgroundColor(Color.rgb(4, 26, 55));
21 голосов
/ 24 января 2012

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

<style name="PrefsTheme" parent="@android:style/Theme.Black.NoTitleBar">
    <item name="android:windowBackground">@color/prefs_bg</item>
    <item name="android:textColor">@color/text_color</item>
    <item name="android:listViewStyle">@style/listViewPrefs</item>
</style>

<style name="listViewPrefs" parent="@android:style/Widget.ListView">
    <item name="android:background">@color/prefs_bg</item>
    <item name="android:cacheColorHint">@color/prefs_bg</item>
</style>
6 голосов
/ 24 августа 2010

android:background не является доступным атрибутом, в соответствии с документацией .

Возможно, вы можете задать тему PreferenceActivity, чтобы добиться изменения цвета, хотя я не пробовалэто потому, что я хочу, чтобы мои настройки выглядели так же, как и у остальных Android, чтобы повысить удобство использования приложения.

4 голосов
/ 06 октября 2010

Или вы также можете сделать рисование в качестве фона:

getListView () setBackgroundDrawable (GetResources () getDrawable (R.drawable.bluegradient).);.

Примечание: setBackgroundDrawable() устарело. Вместо этого используйте setBackground().

getListView () setBackground (GetResources () getDrawable (R.drawable.bluegradient).);.

0 голосов
/ 24 июня 2015

Перейдите на res>values>styles.xml> и добавьте этот код в <style > </style> стиль должен быть основной темой приложения в этом @color/activ - это ресурсы цвета, добавленные к цветам.

<style name="app_theme" parent="@android:style/Theme">
    <item name="android:windowBackground">@color/activ</item>
    <item name="android:windowContentOverlay">@drawable/title_bar_shadow</item>
    <item name="android:listViewStyle">@style/TransparentListView</item>
</style>

, если вы используете app_theme имя тега стиля и добавьте его в манифест

<application
    android:name=".XXXXXX"
    android:allowBackup="true"

    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/app_theme" > //here

Если вы хотите изменить только фон

0 голосов
/ 09 апреля 2012

Укажите линейный макет с прикрепленным текстовым представлением, укажите цвет фона и прикрепите этот XML-файл к предпочтительной категории с помощью свойства макета.

<PreferenceCategory
     android:layout="@layout/preftitle"
 >

Где preftitle - это XML-файл, к которому прикреплены линейный макет и текстовое представление..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...