addPreferencesFromResource - setTheme

  • Ich setzte während der Ausführung dynamisch den Style. Funktioniert,
    außer in den PreferenceActivity und PreferenzFragment - Klassen.



    Abhängig von Kombination von Baisis-Einstellung und neu eingestellten
    Style bleibt hier der alte Style erhalten, bzw. wird z.B. bei
    "android:Theme.Holo.Light" (API 10 -19) dann eine (kaum leserliche)
    graue Schrift auf schwarzem Grund (teilweise in grau unterlegten
    Überschrifts-Blöcken) angezeigt.



    Warum ist die Änderung (nur) bei diesen Klassen nicht möglich, bzw. gibt es dafür eine Lösung?

  • Was hast Du versucht, um das herauszufinden?


    Ist Dir einmal der Gedanke gekommen, dass nicht alle Änderungen direkt zur Laufzeit der aktiven Anzeige durchgeführt werden können und die aktiven Anzeigen dementsprechend einmal neu geladen werden müssten?

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich setzte

    Java
    setTheme(R.style.AppThemeXXX);

    gleich am Anfang der Klasse, in der Regel direkt nach

    Java
    super.onCreate(savedInstanceState);

    Das funktioniert auch für alle anderen Anzeigen. Nicht für (vereinfachtes Beispiel)

    Java
    ...
    public class PreferenceActivity_ extends PreferenceActivity {
    
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    			setTheme(R.style.AppThemeXXX);	
    			addPreferencesFromResource(R.xml.preferences);
    ...


    Ja, habe ich sogar schon probiert!

  • In dem Fall könntest Du Dich mal in ein Override von onApplyTheme() reinhängen und schauen, ob und wie das Theme übernommen wurde.


    Eventuell ist es auch möglich, dass die betreffenden falsch dargestellten Elemente irgend welche Styles benutzen, die durch Dein Theme nicht abgedeckt sind.


    Leider geht aus Deinen Posting nicht hervor, ob das ganze generell bei keiner PreferencesActivity funktioniert oder nur beim Wechseln des Themes in der dazugehörigen Acitivity fehl schlägt.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • onApplyThema() sagt mir noch nichts, schau ich mir aber an.


    Ich hab für den Test erst einmal Standard-Themes verwendet und das auf zwei Geräten unter 2.3.3 und 4.4.4 und anderen Versionen auf dem Emulator geprüft.


    Es betrift immer das Erscheinungsbild der gesamten Anzeige (auch wenn z.B. mehrere preferences.xml hintereinander aufgerufen werden).


    Ich hab es nur mit
    addPreferencesFromResource und
    loadHeadersFromResource
    aus
    PreferenceActivity und
    PreferenceFragment
    probiert.


    Ist sicher auch nichts weltbewegendes. Auf der anderen Seite, wenn es eine einfache Lösung dafür gäbe, wäre es schon schön wenn alle Anzeigen einer App den gleichen Style hätten.

  • Ja, eigentlich sollte man erwarten können, dass das alles durchgängig gut funktioniert.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!