Vit*_*ira 23 android fullscreen android-layout android-5.0-lollipop android-11
我需要在我的应用程序中全屏显示一个屏幕。为此,我正在使用此代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
setContentView(R.layout.activity_camera_photo)
Run Code Online (Sandbox Code Playgroud)
但是,该WindowManager.LayoutParams.FLAG_FULLSCREEN标志已被弃用。
我的应用程序支持 Android Lollipop (API 21) 到 Android R (API 30)。使屏幕全屏显示的正确方法是什么?
And*_* D. 32
科特林
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_container)
@Suppress("DEPRECATION")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.hide(WindowInsets.Type.statusBars())
} else {
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
}
}
Run Code Online (Sandbox Code Playgroud)
如果这没有帮助,请尝试android:fitsSystemWindows="true"在布局文件中删除
爪哇
class Activity extends AppCompatActivity {
@Override
@SuppressWarnings("DEPRECATION")
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_container);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
final WindowInsetsController insetsController = getWindow().getInsetsController();
if (insetsController != null) {
insetsController.hide(WindowInsets.Type.statusBars());
}
} else {
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有像 user924 这样的问题
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.WindowInsetsController com.android.internal.policy.DecorView.getWindowInsetsController()' on a null object reference
我可以通过在 setContentView. 另外,通常情况下,全屏不仅没有状态栏,也没有导航栏。此外,只有hide()方法是不够的。如果我们只放这一行,当我们向下滑动屏幕看到状态栏时,它会下降,但不会再上升。通过设置systemBarBehavior,我们可以让状态栏和导航栏只在我们知道的全屏滑动时暂时出现。
setContentView(R.layout.YOUR_LAYOUT)
//Set full screen after setting layout content
@Suppress("DEPRECATION")
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val controller = window.insetsController
if(controller != null) {
controller.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
controller.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
} else {
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
}
Run Code Online (Sandbox Code Playgroud)
对于 API >= 30,使用WindowInsetsController.hide():
window.insetsController.hide(WindowInsets.Type.statusBars())
Run Code Online (Sandbox Code Playgroud)