How can I disable landscape mode for
some of the views in my Android app?
Friday, 27 October 2017
How to Disable landscape mode in Android?
Add
android:screenOrientation="portrait"
to the activity in the
AndroidManifest.xml. For
example:
android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
/>
EDIT: Since this
has become a super-popular answer, I feel very guilty as forcing portrait is rarely the
right solution to the problems it's frequently applied to.
The major caveats
with forced portrait:
- This
does not absolve you of having to think about activity
lifecycle events or
properly saving/restoring state. There are plenty of
things besides app
rotation that can trigger an activity
destruction/recreation,
including unavoidable things like multitasking. There are no shortcuts; learn to use
bundles andretainInstance
fragments. - Keep in mind that unlike the fairly uniform
iPhone experience, there are some devices where portrait is not the clearly popular
orientation. When users are on devices with hardware keyboards or game pads a la the
Nvidia Shield, on href="https://support.google.com/chromebook/answer/7021273?hl=en"
rel="noreferrer">Chromebooks, on href="https://android-developers.googleblog.com/2018/11/get-your-app-ready-for-foldable-phones.html"
rel="noreferrer">foldables, or on href="https://www.samsung.com/global/galaxy/apps/samsung-dex/"
rel="noreferrer">Samsung DeX, forcing portrait can make your app experience
either limiting or a giant usability hassle. If your app doesn't have a strong UX
argument that would lead to a negative experience for supporting other orientations, you
should probably not force landscape. I'm talking about things like "this is a cash
register app for one specific model of tablet always used in a fixed hardware
dock."
So most apps
should just let the phone sensors, software, and physical configuration make their own
decision about how the user wants to interact with your app. A few cases you may still
want to think about, though, if you're not happy with the default behavior of
sensor
orientation in your use
case:
- If your main concern
is accidental orientation changes mid-activity that you think the device's sensors and
software won't cope with well (for example, in a tilt-based game) consider supporting
landscape and portrait, but usingnosensor
for the orientation.
This forces landscape on most tablets and portrait on most phones, but I still wouldn't
recommend this for most "normal" apps (some users just like to type in the landscape
softkeyboard on their phones, and many tablet users read in portrait - and you should
let them). - If you still need to
force portrait for some reason,sensorPortrait
may be better
thanportrait
for Android 2.3+; this allows for upside-down
portrait, which is quite common in tablet
usage.
php - file_get_contents shows unexpected output while reading a file
I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...
-
I have an app which needs a login and a registration with SQLite. I have the database and a user can login and register. But i would like th...
-
I got an error in my Java program. I think this happens because of the constructor is not intialized properly. My Base class Program public ...
-
I would like to use enhanced REP MOVSB (ERMSB) to get a high bandwidth for a custom memcpy . ERMSB was introduced with the Ivy Bridge micro...
No comments:
Post a Comment