Nach dem Upgrade auf die Support Library v21 ist meine ActionBar in meiner PreferenceActivity
verschwunden.
Habe ich einige Attribute in meinem Thema verpasst, um es wieder zu aktivieren? Ich hatte ähnliche Probleme mit einer schwarzen ActionBar .
Ich habe auch versucht, es ein wenig hackisch hinzuzufügen, indem ich Toolbar
dem Root-Layout ein hinzugefügt habe , aber das hat nicht wie erwartet funktioniert.
Antworten:
Das GitHub Repo finden Sie hier
Sehr ähnlich zu Ihrem eigenen Code, aber XML hinzugefügt, um den festgelegten Titel zu ermöglichen:
Weiterverwendung
PreferenceActivity
:settings_toolbar.xml :
SettingsActivity.java :
Result :
UPDATE (Lebkuchen-Kompatibilität):
Wie hier ausgeführt , geben Gingerbread Devices in dieser Zeile NullPointerException zurück:
FIX:
SettingsActivity.java :
Alle Probleme mit den oben genannten lassen Sie es mich wissen!
UPDATE 2: TUNING WORKAROUND
Wie in vielen Entwicklungsnotizen
PreferenceActivity
erwähnt, unterstützt das Abtönen von Elementen nicht. Wenn Sie jedoch einige interne Klassen verwenden, können Sie dies erreichen. Bis diese Klassen entfernt werden. (Funktioniert mit appCompat support-v7 v21.0.3).Fügen Sie die folgenden Importe hinzu:
Überschreiben Sie dann die
onCreateView
Methode:Result:
AppCompat 22.1
AppCompat 22.1 führte neue getönte Elemente ein, sodass die internen Klassen nicht mehr verwendet werden müssen, um den gleichen Effekt wie beim letzten Update zu erzielen. Folgen Sie stattdessen diesem (immer noch überschreibenden
onCreateView
):NESTED PREFERENCE SCREENS
Viele Leute haben Probleme mit der Aufnahme der Symbolleiste in verschachtelte
<PreferenceScreen />
s, aber ich habe eine Lösung gefunden !! - Nach viel Versuch und Irrtum!Fügen Sie Folgendes hinzu
SettingsActivity
:Der Grund dafür
PreferenceScreen
ist, dass sie als Wrapper-Dialogfeld basieren. Daher müssen wir das Dialogfeld-Layout erfassen, um die Symbolleiste hinzuzufügen.Symbolleistenschatten
Durch das Importieren von Designs ist das
Toolbar
Aufheben und Abschatten in Geräten vor Version 21 nicht möglich. Wenn Sie also eine Höhe auf Ihrem Gerät haben möchten, müssenToolbar
Sie diese in Folgendes einschließenAppBarLayout
:`settings_toolbar.xml:
Nicht zu vergessen, dass Sie die Design Support-Bibliothek als Abhängigkeit in der
build.gradle
Datei hinzufügen :Android 6.0
Ich habe das gemeldete überlappende Problem untersucht und kann das Problem nicht reproduzieren.
Der oben verwendete vollständige Code erzeugt Folgendes:
Wenn mir etwas fehlt, lass es mich bitte über dieses Repo wissen und ich werde es untersuchen.
quelle
android:theme
Problemumgehung korrigiert nur die schwarze Textfarbe in der Symbolleiste für Android 5.0+. Mit der neuen Support-Bibliothek scheint sich etwas geändert zu haben (ich verwende 22.2.0).Verwenden Sie AppCompatActivity & PreferenceFragment, um das Problem zu lösen:
AppCompatActivity:
PreferenceFragment:
quelle
Am Ende habe ich die Symbolleiste selbst mit diesem einfachen Code hinzugefügt:
Hier ist meine Einstellungen_toolbar.xml:
quelle
Eine bessere Lösung als das Rollen Ihrer eigenen Aktionsleiste ist die Verwendung der AppCompatDelegate- Klasse, mit der Sie eine tatsächliche Aktionsleiste aus der Support-Bibliothek einfügen können . Hier ist ein Beispielcode, der aus der Antwort von Ľubomír Kučera auf diese Frage stammt .
quelle
Hallo, ich bin es nicht, wenn Sie dieses Problem noch haben. Aber ich denke, ich werde veröffentlichen, was ich getan habe, um dieses Problem zu lösen, und hoffe, dass es jemandem hilft.
1) Zunächst einmal haben Sie möglicherweise bemerkt, dass PreferenceActivity ListActivity erweitert, was sich wiederum von Activity aus erstreckt.
Laut den Kommentaren im Entwicklerblog ( http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html ) müssen alle Ihre Aktivitäten von ActionBarActivity erben, um v21 verwenden zu können . Da ist also dein Problem.
2) Die Schritte, die ich zum Auflösen verwendet habe, sind:
Dies sollte das Problem beheben.
Prost!
quelle
Ich habe etwas Ähnliches wie eine akzeptierte Frage gemacht, aber ich verwende mein Layout auch (
MainActivity
auch) für andere Aktivitäten , sodass ich nicht einfach einen Pfeil darin fest codieren kann.Was hat bei mir funktioniert:
quelle
Ich hatte das gleiche Problem. Versuchen Sie einfach, das Thema der Aktivität in das zu ändern, in dem sich eine ActionBar befindet. Das Hinzufügen der folgenden Zeile zum Aktivitäts-Tag von SettingsActivity hat für mich funktioniert:
android:theme="Theme.AppCompat.DayNight.DarkActionBar"
quelle
Ein einfacher Weg, den ich herausgefunden habe, ist das Überschreiben:
In deinem Stil:
quelle