以编程方式在 Android 中使应用程序全屏显示
Posted
技术标签:
【中文标题】以编程方式在 Android 中使应用程序全屏显示【英文标题】:Programmatically make app FULL SCREEN in Android 【发布时间】:2012-06-03 23:04:30 【问题描述】:我知道可以通过活动清单android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
中的标记使应用程序全屏显示是否可以通过编程方式从应用程序内切换到全屏模式?
【问题讨论】:
【参考方案1】:添加两行...
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
【讨论】:
感谢 Samir 的快速回复,会检查一下。 或许,你可以看看***.com/questions/20005746/…,帮帮我? 但是这段代码会限制滚动视图...在这段代码之后滚动视图将不起作用【参考方案2】:您可以创建新样式并添加
<item name="android:windowFullscreen">true</item>
或者您可以通过编程方式进行:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
【讨论】:
这些行限制了滚动视图的滚动。 doc ofaddFlags()
:根据 @link #setFlags 设置标志位的便利功能。事实上,这只是一个电话setFlags(flags, flags);
。【参考方案3】:
在setContentView之前的Activity onCreate中添加这个:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
在 AndroidManifest.xml 文件中:
<activity android:name=".ActivityName"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
</activity>
【讨论】:
为什么还要在清单中添加它?这仍然适用于较新的设备吗?【参考方案4】:如果您需要全屏沉浸式模式(用于游戏、画廊等),这是我使用和推荐的解决方案。
最有效的方法是仅在需要时设置 SystemUIVisibility:
-
在您的 onCreate() 中
在全屏模式丢失时使用 OnSystemUIChangeListener
公共类 BaseActivity 扩展 Activity
@SuppressLint("InlinedApi")
private static final int UI_OPTIONS = View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// Step 1
hideSystemUI();
// Step 2
getWindow().getDecorView()
.setOnSystemUiVisibilityChangeListener(new View
.OnSystemUiVisibilityChangeListener()
@Override
public void onSystemUiVisibilityChange(int visibility)
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
hideSystemUI();
);
private void hideSystemUI()
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) actionBar.hide();
getWindow().getDecorView().setSystemUiVisibility(UI_OPTIONS);
【讨论】:
【参考方案5】:试试这个,
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
或
<activity android:name=".ActivityName"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
【讨论】:
【参考方案6】:在 onCreate() 方法中写入
requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
【讨论】:
以上是关于以编程方式在 Android 中使应用程序全屏显示的主要内容,如果未能解决你的问题,请参考以下文章
是否可以以编程方式强制 iOS 应用程序在拆分视图/滑动中在 ios9 中全屏显示?
使用Android Navigation Component,如何使actionBar透明并在单个Fragment中使布局全屏?
如何通过单击 Android 中的按钮使 VideoView 全屏显示?