Symbolleiste wird versteckt in verschachtelten PreferenceScreen
Benutze ich PreferenceFragment
im ActionBarActivity
von support-v7-Bibliothek.
In der Activity habe ich Toolbar
. Alles okay, bis ich eine verschachtelte PreferenceScreen
.
In dem geöffneten Bildschirm die Toolbar
versteckt ist.
Vielleicht weiß jemand einen workaround für dieses Problem?
Einstellungen xml-Datei:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="Main category" >
<EditTextPreference
android:defaultValue="defaultValue"
android:key="key_global_setting"
android:title="Global title" />
</PreferenceCategory>
<PreferenceCategory android:title="Nested screens" >
<PreferenceScreen
android:persistent="false"
android:title="@string/settings_facility_title" >
<CheckBoxPreference
android:defaultValue="false"
android:key="nested_screen_1_1"
android:title="Nested screen 1.1 check box" />
<CheckBoxPreference
android:defaultValue="true"
android:key="nested_screen_1_2"
android:title="Nested screen 1.2 check box" />
</PreferenceScreen>
<PreferenceScreen
android:persistent="false"
android:title="@string/settings_menu_screen_title" >
<CheckBoxPreference
android:defaultValue="true"
android:key="nested_screen2"
android:title="Nested screen 2 check box" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
Aktivität layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".SettingsScreen" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
style="@style/Toolbar" />
<FrameLayout
android:id="@+id/contentSettings"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
- stackoverflow.com/a/27455363/2247612 Diese Antwort hat eine perfekte Lösung für Support-Bibliothek
InformationsquelleAutor yurezcv | 2015-01-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich die Lösung auf meinem eigenen. Ich habe einen kleinen work-around, der alle diese verschachtelten
PreferenceScreen's
. Ich machte einfach eine Trennung auf verschiedenexml-preference
- Dateien, erstellt einen zusätzlichenFragment
erstrecktPreferenceFragment
und dort zeige ich eine entsprechende verschachtelten Bildschirm bevorzugt.Vielleicht würde jemand fand dies nützlich.
Github Quellen-link.
Einige code-Beispiele unten:
main_preferences.xml
nested_screen1_preferences.xml
nested_screen2_preferences.xml
SettingsActivity.java
MyPreferenceFragment.java
NestedPreferencesFragment.java
Hier kommt meine Lösung, die inspiriert ist von der ursprünglichen Antwort, aber nicht so kompliziert. Vielleicht wird das jemandem helfen...
layout/settings.xml
:Klassen:
Getestet habe ich es auf
4.3
und5.0.2
und ohne Beschränkung der schachtelungsebenen giltIn meiner Lösung braucht man nur
AppCompatActivity
und einePreferenceFragement
, aber mehrere XML-Dateien, die jeweils nur eine Ebene derPreferenceScreens
.XML-Datei Liste
Dieser code ist für eine sub-Ebene (für die Schlichtheit und Sie erhalten die Idee), aber Sie können leicht erweitern, um beliebige sub-Ebenen der
PreferenceScreens
.SettingsFragment.java
SettingsActivity.java
Technisch sollte es Arbeit für alle Android-Versionen, für die die
PreferenceFragment
verfügbar ist.Als das Problem kommt von dem Teil, dass Sie noch in der gleichen activity/fragment und die verschachtelten pref Bildschirm ist nur ein dialog Sie können Folgendes tun:
Holen Sie sich die root-Blick aus dem dialog:
(PreferenceScreen)preference).getDialog().getWindow()
.getDecorView().getRootView());
Rekursiv suchen, bis Sie eine stub-view (es gibt einen, leider weiß ich nicht, die
android.R.id.xxxxx
) und festlegen, was layout, das Sie brauchen als Titel, das Aussehen der Symbolleiste(Sie können aufblasen der Symbolleiste):In der layout-Sie können nur eine Symbolleiste. Und setzen Sie auf das zurück-Symbol. Registrieren Sie sich für klicken Sie auf es und mit Verweis auf das fragment, auf klicken, können Sie schließen Sie das Dialogfeld. Haben Sie Titel einstellen und etc.