如何用Java/Kotlin设置Android TV竖屏模式?代码无效求适配方案
解决竖屏设置不生效及全屏适配问题
1. 排查Manifest配置冲突
先检查AndroidManifest.xml中对应Activity的屏幕方向配置,避免和代码设置冲突。直接在Manifest里锁定竖屏并添加配置变更监听:
<activity android:name=".你的目标Activity" android:screenOrientation="portrait" android:configChanges="orientation|screenSize|smallestScreenSize"> </activity>
添加configChanges可避免屏幕旋转时重启Activity,让竖屏设置更稳定。
2. 调整代码调用时机
将setRequestedOrientation放在onCreate方法的setContentView之前执行,确保布局加载前就锁定方向:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_main); // 其他初始化逻辑 }
3. 实现竖屏全屏适配
要让竖屏内容像横屏一样铺满整个屏幕,可通过两种方式实现:
- 代码设置全屏:
// 隐藏状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Android 11+ 隐藏导航栏并保持沉浸式 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
- 主题设置全屏:
在styles.xml中定义全屏主题:
<style name="FullScreenPortraitTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> </style>
然后在Manifest的目标Activity中应用该主题。
4. 检查模拟器设置
部分模拟器可能强制固定横屏,进入模拟器的「显示」设置,确认屏幕方向为「跟随系统」,而非手动锁定横屏。
5. Android 8.0+ 特殊处理
如果是Android 8.0(API 26)及以上版本,关闭分屏模式后再测试,分屏状态可能会干扰屏幕方向锁定逻辑。
内容的提问来源于stack exchange,提问作者Syed Hasan
相关产品推荐
相关产品推荐

