Ändern Sie die Hintergrundfarbe der Präferenz

Lesezeit: 5 Minuten

Benutzer-Avatar
David Prun

Ich habe ein PreferenceCategoryxml-Datei und ich habe alle Einstellungen darin definiert, ich nenne dies von der Klasse, die sich erweitert PreferenceActivity. Ich kann den Hintergrund meines Einstellungsbildschirms nicht festlegen, dieser Bildschirm wird mithilfe der unten gezeigten XML-Datei angezeigt. Bitte beachten Sie, dass ich die bereits definiert habe android:background="#041A37"trotzdem bleibt der Bildschirm die Standardfarbe: schwarz.

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));
    }
}

Einstellung.xml ist

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

Obwohl ich eingestellt habe android:background="#041A37" In jeder Datei wird der Hintergrund nicht marineblau oder in irgendeiner anderen Farbe. Es bleibt die Standardfarbe Schwarz. So ändern Sie die Hintergrundfarbe. Bitte teilen Sie mir alle Hinweise / Hinweise mit. Wenn Sie auf dasselbe Problem gestoßen sind, teilen Sie mir mit, welche Änderungen Sie vorgenommen haben, um die Hintergrundfarbe festzulegen.

Benutzer-Avatar
AndreasW

Sie können ein Design definieren und dieses dann für Ihre PreferenceActivity im Manifest festlegen. Ihr Thema kann dann eine Hintergrundfarbe oder ein Fensterhintergrundbild definieren, wenn Sie dies bevorzugen.

Manifest:

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

Fügen Sie dann das Design zu Ihrer styles.xml hinzu

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

Im obigen Ausschnitt sind sowohl eine Hintergrundfarbe als auch ein Hintergrundbild definiert, um zu zeigen, wie es geht.

  • Wenn Sie nur die Hintergrundfarbe ändern möchten, würde ich die Einstellung empfehlen android:windowBackground mit einer definierten Farbe, wie z @color/myFavoriteColorda sonst der Hintergrund (das Bild) jeder Ansicht überschrieben wird, einschließlich der Dialoge der Aktivität.

    – Paul Lammertsma

    9. November 2011 um 11:26 Uhr

  • Verwenden Sie android:windowBackground, mit android:background wird Ripple nicht richtig funktionieren

    – Bita Mirshafiee

    20. April 2020 um 5:25 Uhr


  • Wie kann ich das tun, wenn es keine Aktivität, sondern nur ein PreferenceFragment gibt? (PräferenzFragmentCompat)

    – Dominik

    26. November 2020 um 9:56 Uhr

  • @Dominik, dein Fall war meinem ähnlich. Als Lösung habe ich definiert windowBackground in meinem AppTheme style in styles.xml, dh: <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"><item name="android:windowBackground">@android:color/darker_gray</item></style>.

    – ilo

    28. November 2021 um 11:55 Uhr


Benutzer-Avatar
David Prun

Das hat bei mir funktioniert

getListView().setBackgroundColor(Color.TRANSPARENT);

getListView().setCacheColorHint(Color.TRANSPARENT);

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

  • warum rufst du setBackgroundColor zweimal auf?

    – Android-Entwickler

    7. April 2013 um 10:18 Uhr

  • Vielen Dank! Ich habe versucht, das Thema auf Aktivität einzustellen, aber das war nicht die bevorzugte Lösung, da es sich auch auf die Aktionsleiste auswirkt. getListView().setBackgroundColor(…) ändert nur den Inhalt und genau das wollte ich.

    – Atte Backenhof

    4. Juni 2015 um 8:47 Uhr

Eine weitere Problemumgehung in Bezug auf die Farbe besteht darin, dass Sie ein Thema für die Einstellungsaktivität erstellen und auch die Hintergrundfarbe der Listenansichten festlegen:

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

  • Hervorragende Antwort! Besonders für den Hinweis auf eine Möglichkeit, den cacheColorHint-Wert für die ListView in PrefereneScreen festzulegen!

    – Maghoumi

    1. Mai 2012 um 20:41 Uhr

  • Dieser hat bei mir auch für verschachtelte Einstellungen (Einstellungsbildschirme) funktioniert. Gut gemacht! Stellen Sie nur sicher, dass Sie nicht setzen windowBackground Anstatt von background in die listViewPrefs Stil, oder Sie werden sich eine Weile fragen, warum zum Teufel es nicht funktioniert :P.

    – Kar

    21. Dezember 2012 um 9:25 Uhr

  • Ja, bei meiner funktioniert es einwandfrei PreferenceFragmentaber leider weiß ich nicht, wie ich diese funky gelbe Hervorhebungsfarbe ändern kann, die ich bei der Auswahl des Artikels bekomme … 🙂

    – Zahnfleisch

    19. Oktober 2019 um 8:42 Uhr

android:background ist laut dem kein verfügbares Attribut Dokumentation.

Es ist möglich, dass Sie das thematisieren PreferenceActivity um Ihre Farbänderung zu erreichen, obwohl ich dies nicht versucht habe, weil ich möchte, dass meine Einstellungen wie die des Restes von Android aussehen, um die Benutzerfreundlichkeit der App zu verbessern.

Benutzer-Avatar
Wurzelko

Oder Sie können auch als Hintergrund zeichnen:

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

Notiz: setBackgroundDrawable() ist veraltet. Verwenden setBackground() stattdessen.

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

Benutzer-Avatar
Benutzer8260998

Ich stand vor der gleichen Anforderung (Hintergrund des Androidx-Einstellungsbildschirms für das Einstellungsfragment).

Der folgende Code hat für mich in einem Fragment funktioniert. (in themes.xml). Ich gehe davon aus, dass es auch für eine Aktivität funktionieren wird.

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        ...............
       <!-- Add below -->
        <item name="preferenceTheme">@style/preference</item>
    </style>
    
    <style name="preference" parent="Theme.AppCompat">
        <item name="android:background">@color/purple_200</item>
    </style>
</resources>

Benutzer-Avatar
AndreasW

Bitte spezifizieren Sie ein lineares Layout mit angehängter Textansicht und spezifizieren Sie die Hintergrundfarbe und fügen Sie diese XML-Datei mit der layout-Eigenschaft an die Preferencecategory an.

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

Wo preftitle eine XML ist, die ein lineares Layout und eine Textansicht angehängt hat.

1159290cookie-checkÄndern Sie die Hintergrundfarbe der Präferenz

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy