web-dev-qa-db-fra.com

changer la couleur d'arrière-plan de la préférence

J'ai un PreferenceCategory, un fichier xml et j'y ai défini toutes les préférences, je l'appelle depuis la classe qui étend PreferenceActivity. Je n'arrive pas à définir l'arrière-plan de mon écran de paramètres, cet écran s'affiche avec l'aide du fichier xml illustré ci-dessous. Veuillez voir que j'ai déjà défini le Android:background="#041A37", l'écran reste la couleur par défaut: noir.

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 est

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

Bien que j'aie défini Android:background="#041A37" dans chaque fichier, l'arrière-plan ne se transforme pas en bleu marine ou en toute autre couleur d'ailleurs. Il reste la couleur par défaut, le noir. Comment changer la couleur d'arrière-plan. Veuillez me faire part de tous les pointeurs/conseils, si vous avez rencontré le même problème, faites-moi savoir quelles modifications vous avez apportées pour définir la couleur d'arrière-plan.

52
David Prun

Cela a fonctionné pour moi

getListView().setBackgroundColor(Color.TRANSPARENT);

getListView().setCacheColorHint(Color.TRANSPARENT);

getListView().setBackgroundColor(Color.rgb(4, 26, 55));
44
David Prun

Vous pouvez définir un thème, puis le définir pour votre PreferenceActivity dans le manifeste. Votre thème peut alors définir une couleur d'arrière-plan ou une image de fond de fenêtre si vous préférez.

Manifeste:

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

Ajoutez ensuite le thème à votre styles.xml

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

Dans l'extrait ci-dessus, une couleur d'arrière-plan et une image d'arrière-plan sont définies pour montrer comment procéder.

77
AndreasW

En ce qui concerne la couleur, vous pouvez également créer un thème pour l'activité des préférences et mettre également la couleur d'arrière-plan des vues de liste:

<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>
21
Sileria

Android:background n'est pas un attribut disponible, selon le documentation .

Il est possible que vous puissiez thèmeer le PreferenceActivity pour réaliser votre changement de couleur, mais je n'ai pas essayé cela, car je veux que mes préférences ressemblent à celles du reste d'Android, pour améliorer la convivialité de l'application.

6
CommonsWare

Ou vous pouvez également rendre Drawable comme arrière-plan:

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

Remarque:setBackgroundDrawable() est obsolète. Utilisez à la place setBackground().

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

4
Rootko

Veuillez spécifier une disposition linéaire avec une vue de texte attachée et spécifier la couleur d'arrière-plan et attacher ce xml à la catégorie de préférence en utilisant la propriété de disposition.

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

Où preftitle est un xml qui a une disposition linéaire et une vue texte attachée.

0
madhavi

Aller à res>values>styles.xml> et ajoutez ce code à votre <style > </style> le style doit être le thème de base de l'application dans ce @color/activ est des ressources de couleur ajoutées aux couleurs.

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

si tu utilises app_theme nom de la balise de style, puis ajoutez comme ceci à votre manifeste

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

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

Si vous voulez seulement changer votre fond

0