/ / Wyłącz krajobraz na HDPI, ale nie na domyślnym poziomie - Android, portret

Wyłącz krajobraz w HDPI, ale nie w krajobrazie domyślnym - Android, portret

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 № 1

Zrobił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);