Problem
ein Gerät aus einem Porträt einer Scheibe Rotierende PreferenceScreen
auf eine Zwei-Scheiben-Landschaft PreferenceScreen
verursachen Landschaft nur als eine Scheibe zu zeigen. Tritt nicht auf, wenn Sie den Kopfzeilenbildschirm anzeigen.Probleme mit Dual-Fenstern Vorzugsbildschirmen
Setup
Dies ist nur für ICS und aufwärts. Ich habe eine PreferenceActivity
, die preference-headers
lädt. Jeder Header verbindet sich mit einem , der wiederum eine PreferenceScreen
lädt. Hübscher Lauf der Mil.
Einzelheiten
Alles funktionierte gut, bis ich, dass Android bemerkt wird nur Auto-Schalter auf einen Zwei-Scheiben-Look für bestimmte Bildschirme. Nach einiger Recherche habe ich von einer Commonsware post erfahren, dass Android das nur für sw720dp tun wird. Etwas von einer Verschwendung, wenn Sie mich fragen, da viele Geräte def viel Platz für zwei Scheiben haben. Also überging ich die onIsMultiPane()
Methode, um für w600dp und aufwärts wahr zurückzukommen. Arbeitete wie ein Charme .... irgendwie.
Gegeben ein Gerät, das Single-Fenster im Hochformat und Dual-Fenster im Querformat zeigt; Anzeigen der Header im Hochformat und Drehen in die Landschaft, funktioniert gut. Wenn Sie jedoch eine Kopfzeile auswählen und den folgenden Bildschirm im Hochformat laden, drehen Sie den Mauszeiger auf Querformat, um das Gerät in einem einzigen Fenster zu belassen, anstatt wieder in das Dual-Fenster zu wechseln. Wenn Sie dann zurück zum Kopfzeilenbildschirm navigieren, wird wieder ein Dual-Pane-Look angezeigt, mit der Ausnahme, dass eine Kopfzeile nicht vorausgewählt wird. Daher bleibt das detaillierte Fenster leer.
Ist das beabsichtigte Verhalten? Wie auch immer, um es zu umgehen? Ich versuchte auch, onIsHidingHeaders()
zu überschreiben, aber das verursachte nur alles, um einen leeren Bildschirm zu zeigen.
-Code
Preference Aktivität:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
super.onBuildHeaders(target);
loadHeadersFromResource(R.xml.preference, target);
}
@Override
public boolean onIsMultiPane() {
return getResources().getBoolean(R.bool.pref_prefer_dual_pane);
}
}
A Preference Kopf Frag:
public class ExpansionsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_expansions);
}
public static ExpansionsFragment newInstance() {
ExpansionsFragment frag = new ExpansionsFragment();
return frag;
}
}
Was "sagen", um eine Perspektive debug? –
Sie haben einen Wert, der den Status "sichtbar" enthält. –
PreferenceActivity behandelt die Sichtbarkeitsänderungen. Ich ändere gerade nichts davon. Der obige Code ist buchstäblich alles, was ich tue. –