Mam aplikację i problem polega na tym, że potrzebujedo obsługi tabletów i telefonów. Jednak na tabletach zamiast portretu można użyć krajobrazu, bo jest wystarczająco duży, żeby wszystko wyeksponować, jednak w telefonie to wszystko psuje, bo ekran jest za mały.
Chciałem wyłączyć widok poziomy na telefonach, a nie tabletach.
Widzę, że można zdefiniować portret w pliku manifest.xml, ale czy można go wyłączyć w zależności od układu xml?
Na przykład:
- telefony używają układu-hdpi -tablets domyślnie układ
Jeśli urządzenie używa układu layout-hdpi, powinno być włączone tylko ustawienie pionowe, w przeciwnym razie może przejść do krajobrazu.
Odpowiedzi:
1 dla odpowiedzi № 1Zrobiłem to, wykonując następujące czynności:
- w manifeście jako typ screenOrientation: "@ integer / screenOrientation"
- dla telefonu (jeśli chcesz portait) ustaw wartość screenOrientation na "1"
- dla tabletu (jeśli chcesz poziomo) ustaw wartość screenOrientation na „0”
Te wartości pochodzą source sdk więc jeśli chcesz inny, sprawdź to (wyszukaj screenOrientation w tym linku).
Mam nadzieję, że to rozwiązanie Ci pomoże.
0 dla odpowiedzi nr 2
Alternatywą dla odpowiedzi udzielonej przez @pjanecze jest zrobienie tego w kodzie:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Nazywam to w mojej podstawowej metodzie Activity onCreate. Z jakiegoś powodu metoda manifestu nie działała dla mnie.
Niektórzy użytkownicy zgłaszają problemy z ignorowaniem powyższego kodu, jednak można to naprawić, najpierw ustawiając żądaną orientację na coś innego:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);