Jak mogę wyłączyć tryb poziomy dla niektórych widoków w mojej aplikacji na Androida?
android
android-manifest
android-orientation
lostInTransit
źródło
źródło
Odpowiedzi:
Dodaj
android:screenOrientation="portrait"
do działania w pliku AndroidManifest.xml. Na przykład:EDYCJA: Ponieważ stało się to bardzo popularną odpowiedzią, czuję się bardzo winny, ponieważ zmuszanie do portretowania rzadko jest właściwym rozwiązaniem problemów, do których często się stosuje.
Główne zastrzeżenia dotyczące wymuszonego portretu:
retainInstance
fragmentów.Dlatego większość aplikacji powinna pozwalać czujnikom telefonu, oprogramowaniu i fizycznej konfiguracji na podejmowanie własnych decyzji dotyczących sposobu interakcji użytkownika z aplikacją. Kilka przypadków, o których warto pomyśleć, jeśli nie jesteś zadowolony z domyślnego zachowania
sensor
orientacji w twoim przypadku użycia:nosensor
orientacji. Wymusza to orientację poziomą na większości tabletów i portret na większości telefonów, ale nadal nie zalecałbym tego w przypadku większości „normalnych” aplikacji (niektórzy użytkownicy lubią pisać na klawiaturze programowej w orientacji poziomej na swoich telefonach, a wielu użytkowników tabletów czyta w trybie pionowym - i powinieneś im pozwolić).sensorPortrait
może być lepszy niż wportrait
przypadku Androida 2.3+; pozwala to na odwrócenie portretu, co jest dość powszechne w przypadku używania tabletu.źródło
AndroidManifest.xml
Dopóki nie przeczytałem tego posta, nie wiedziałem o zmianie pliku, więc w moich aplikacjach użyłem tego:źródło
Dodaj to
android:screenOrientation="portrait"
do pliku manifestu, w którym deklarujesz swoją aktywność w ten sposóbJeśli chcesz to zrobić za pomocą kodu Java, spróbuj
przed wywołaniem
setContentView
metody dla swojej aktywności wonCreate()
.Mam nadzieję, że ta pomoc będzie zrozumiała dla wszystkich ...
źródło
Wiele odpowiedzi tutaj sugeruje się użyć
"portrait"
w pliku AndroidManifest.xml. To może wydawać się dobrym rozwiązaniem - ale jak zauważono w dokumentacji, wyróżniasz urządzenia, które mogą mieć tylko krajobraz. Zmuszasz także niektóre urządzenia (najlepiej działające w krajobrazie) do przejścia w pionie, nie uzyskując właściwej orientacji.Moją propozycją jest użycie
"nosensor"
zamiast tego. Spowoduje to, że urządzenie będzie korzystało z domyślnej preferowanej orientacji, nie zablokuje żadnych zakupów / pobrań w Google Play i zapewni, że czujnik nie zepsuje twojej (NDK, w moim przypadku) gry.źródło
Po prostu dodaj Like this Line in Your Manifest
źródło
Jeśli chcesz ustawienia użytkownika,
to polecam
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Możesz zmienić ustawienia z menu ustawień.
Wymagam tego, ponieważ moje zegary muszą odpowiadać temu, co jest na ekranie, a obracanie ekranu zniszczy bieżącą aktywność.
źródło
Możesz to zrobić dla całej aplikacji bez konieczności przekształcania wszystkich działań w wspólną klasę bazową.
Sztuczka polega na tym, aby upewnić się, że do projektu dołączono podklasę aplikacji. W funkcji onCreate (), wywoływanej przy pierwszym uruchomieniu aplikacji, rejestrujesz obiekt ActivityLifecycleCallbacks (poziom API 14+), aby otrzymywać powiadomienia o zdarzeniach cyklu życia aktywności.
Daje to możliwość wykonywania własnego kodu za każdym razem, gdy dowolne działanie w aplikacji zostanie uruchomione (zatrzymane, wznowione lub cokolwiek innego). W tym momencie możesz wywołać setRequestedOrientation () na nowo utworzonym działaniu.
I nie zapomnij dodać aplikacji: name = ". MyApp" w pliku manifestu.
źródło
Użyj tego w onCreate () działania
źródło
Powinieneś zmienić
android:screenOrientation="sensorPortrait"
w AndroidManifest.xmlźródło
Po prostu dodaj ten atrybut do tagu aktywności.
źródło
Jeśli nie chcesz lepiej męczyć się z dodawaniem orientacji w każdym przejawie pozycji działania, utwórz klasę BaseActivity (dziedziczy „Activity” lub „AppCompatActivity”), która będzie dziedziczona przez każdą aktywność aplikacji zamiast „Activity ”lub„ AppCompatActivity ”i wystarczy dodać następujący fragment kodu do BaseActivity:
źródło
Dodaj
android:screenOrientation="portrait"
do działania, które chcesz wyłączyć tryb krajobrazu.źródło
Jeśli chcesz wyłączyć
Landscape mode for your android app
(lub pojedyncze działanie), wszystko co musisz zrobić, to dodać,android:screenOrientation="portrait"
do znacznika aktywności wAndroidManifest.xml
pliku.Lubić:
Inna droga, podejście programowe.
Jeśli chcesz to zrobić programowo, tj. za pomocą kodu Java. Możesz to zrobić, dodając poniższy kod do klasy Java działania, którego nie chcesz wyświetlać w trybie poziomym.
Mam nadzieję, że ci to pomoże. Aby uzyskać więcej informacji, odwiedź tutaj, wprowadź opis linku tutaj
źródło
android:screenOrientation="nosensor">
Jak zmienić orientację w niektórych widokach
Zamiast blokować orientację całej aktywności, możesz użyć tej klasy, aby dynamicznie zablokować orientację z dowolnego widoku w sposób pragmatyczny: -
Zrób swój widok Krajobraz
Zrób swój widok Portret
Odblokuj orientację
Orientacja Util Class
źródło
posługiwać się
źródło
Musisz ustawić orientację każdego działania.
źródło
dodaj klasę do metody oncreate ()
źródło
Jeśli używasz Xamarin C #, niektóre z tych rozwiązań nie będą działać. Oto rozwiązanie, które według mnie działa.
Powyżej klasy działa dobrze, podobnie jak inne rozwiązania, również nie ma zastosowania na całym świecie i należy ją umieścić w każdym nagłówku działania.
źródło
Możesz zmusić określoną aktywność do pozostawania w trybie portretowym, pisząc to w pliku manifest.xml
Możesz także zmusić swoją aktywność do pozostania w trybie postrait, pisząc następujący wiersz w metodzie onCreate () twojej aktywności
źródło
źródło
Dodaj poniżej wyróżnienie swojego projektu,
następnie używasz klasy manifestu, takiej jak React_Native (Your Project Folder) / android / app / src / main / AndroidManifest.xml
Dziękuję Ci!
źródło
W
<apphome>/platform/android
utworzonym kataloguAndroidManifest.xml
(kopiowanie go z wygenerowanego). Następnie dodajandroid:screenOrientation=
„portrait
” do WSZYSTKICH elementów działania.źródło
możemy ograniczyć Aktywność w trybie pionowym lub poziomym za pomocą atrybutu lub Androida: screenOrientation.
jeśli w moim programie jest więcej niż jedna aktywność, masz swobodę ograniczenia dowolnej aktywności w dowolnym trybie i nigdy nie wpływa to na inne, których nie chcesz.
źródło
Albo w oczywistej klasie.
lub programowo
Uwaga: powinieneś to nazwać przed
setContentView
metodą dla swojej aktywności wonCreate()
.źródło
Dodaj
android:screenOrientation="portrait"
w AndroidManifest.xml pliku .Na przykład :
źródło
Aby pomóc komuś innemu, wystarczy następujący atrybut w AKTYWNOŚCI w AndroidManifest.xml:
android: configChanges = "orientacja"
Zatem pełny węzeł aktywności:
źródło
W kotlin to samo można osiągnąć programowo za pomocą poniżej
źródło
To działało dla mnie. Spróbuj dodać ten kod w pliku AndroidManifest
źródło
Umieść to w swoim manifeście.
Orientacja będzie pionowa, ale jeśli telefon użytkownika jest odwrócony, pokazuje również prawidłową drogę. (Twój ekran będzie się obracał o 180 stopni).
System ignoruje ten atrybut, jeśli działanie działa w trybie wielu okien .
źródło
jeśli Twoja aktywność związana jest z pierwszym stanem orientacji urządzenia, uzyskaj bieżącą orientację urządzenia w
onCreate
metodzie, a następnie napraw ją na zawsze:źródło