How can I disable landscape mode for some of the views in my Android app?
android:screenOrientation="portrait" to the activity in the AndroidManifest.xml. For example:
<activity 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:
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:
nosensorfor 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).
sensorPortraitmay be better than
portraitfor Android 2.3+; this allows for upside-down portrait, which is quite common in tablet usage.
I was not aware of the
AndroidManifest.xml file switch until reading this post, so in my apps I have used this instead:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation