Erlaube Rotation / Landschaft in einem Fragment
Meine app hat eine einzelne Aktivität mit einem FragmentPagerAdapter mit vier Fragmente (Mit den ViewPagerIndicator-library). Eines dieser Fragmente hat designs für beide eine separate hoch-und Querformat-layout, die anderen drei nicht und müssen behoben werden, um das hochformat.
Mein Gedanke war es, für android:configChanges="orientation"
im manifest und rufen getActivity().setRequestedScreenOrientation()
im onResume()
alle Fragmente, sperren SCREEN_ORIENTATION_PORTRAIT
in drei von Ihnen, sondern SCREEN_ORIENTATION_UNSPECIFIED
in die eine, muss, damit die rotation, aber das funktioniert nicht. Die app bleibt im hochformat.
Gibt es eine Möglichkeit, dies zu erreichen?
Es ist eigentlich nicht notwendig für die eigentliche Tätigkeit zu drehen, wenn es sowieso zu ermöglichen, ein fragment, um die Richtung ändern, ohne seine Tätigkeit dies zu tun, aber ich habe nicht gefunden, was erwähnenswert, wobei dies möglich. Es wäre auch genauso ok, wenn die Aktivität dreht, da die tab-Leiste wird ausgeblendet, wenn im Querformat.
InformationsquelleAutor der Frage Garcon | 2012-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überschreiben
setUserVisibleHint()
in jedem fragment.In dem Porträt nur Fragmente:
in die hochformat/Querformat-fragment:
Damit wird die gesamte Aktivität in einem fragment, aber beheben zu können, portrait in anderen.
InformationsquelleAutor der Antwort Garcon
Eine Sache, die für mich gearbeitet wurde, nur
Oben in der
OnCreateView()
- Methoden für die einzelnen Fragmente.Würden Sie wollen, zu ersetzen
ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
mit den entsprechendenSCREEN_ORIENTATION
konstant.Sobald ich dies getan habe funktionierte es einwandfrei unter ICS. Sie don ' T Fall anpassen, um das manifest für die spezifische Aktivität.
InformationsquelleAutor der Antwort George Baker
Problem ist, wenn Sie aktivieren
configChanges
Sie dann behandeln müssenonConfigurationChanged()
Methode in der activity/Fragmente.Bedeutung, dass, wenn Sie haben Feuer der
getActivity().setRequestedScreenOrientation()
müssen Sie manuell aufrufensetContentView()
wieder zu reinflate die Querformat-layout.Einstellung `nicht angegeben' wird sich nicht ändern, um die Landschaft, es wird nur bleiben, wo es ist.
Ich würde
getActivity().setRequestedScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
für die portrait-Fragmente.Und
getActivity().setRequestedScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
für die Landschafts-Fragmente.Diese wird reinflate der Aktivität layout, das heißt, Sie müssen dann verfolgen Sie die letzten ViewPager-Seite, wo Sie auf, machen Sie sicher, dass Sie zeigen, dass nach der layout neu erstellt worden, da auf Standard zurück, um das fragment, bevor Sie dem Benutzer angezeigt werden sollen und fragment
onResume()
genannt wird.Sein wird, fummelig aber es ist möglich.
InformationsquelleAutor der Antwort Chris.Jenkins
im fragment, die Sie festlegen möchten, fügen Sie einfach zu Ihrer onCreate/onCreateView
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
in den anderen Fragmenten, die Sie zulassen möchten multi Orientierung hinzufügen
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
InformationsquelleAutor der Antwort ravid rinek
InformationsquelleAutor der Antwort Virendra Kachhi