在 Kotlin 中,你可以通过多种方式隐藏导航栏、状态栏和动作栏。以下是一些常见的方法:
你可以使用 WindowInsetsController
来隐藏状态栏和导航栏。这种方法适用于 Android 11(API 级别 30)及以上的设备。
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.let {
it.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
} else {
@Suppress("DEPRECATION")
window.decorView.systemUiVisibility = (
View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
)
}
}
}
你可以使用 supportActionBar
来隐藏动作栏。
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 隐藏动作栏
supportActionBar?.hide()
}
}
你还可以在布局文件中使用 android:fitsSystemWindows
属性来隐藏状态栏和导航栏。
<!-- res/layout/activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- 你的布局内容 -->
</RelativeLayout>
你可以在应用的主题中设置全屏模式来隐藏状态栏和导航栏。
<!-- res/values/styles.xml -->
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- 全屏模式 -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
然后在 AndroidManifest.xml
中应用这个主题:
<!-- AndroidManifest.xml -->
<application
android:theme="@style/AppTheme">
<!-- 其他配置 -->
</application>
你可以结合以上方法,根据需要在不同的场景中隐藏状态栏、导航栏和动作栏。
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 隐藏动作栏
supportActionBar?.hide()
// 隐藏状态栏和导航栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.let {
it.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
} else {
@Suppress("DEPRECATION")
window.decorView.systemUiVisibility = (
View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
)
}
}
}
通过以上方法,你可以在 Kotlin 中隐藏导航栏、状态栏和动作栏,以实现全屏显示或其他自定义的用户界面效果。
领取专属 10元无门槛券
手把手带您无忧上云