はじめに
ActionBar消してStatusBarとNavigationBarを透過させて全画面表示する方法です。
完成形は以下の通り。
透過させる前 | 透過させた後 |
---|---|
消していきます
Barを消したいActivityに以下を記述
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportActionBar?.hide() // ActionBarを消す
hideSystemBars()
setContentView(R.layout.activity_main)
}
// StatusBarとNavigationBarの範囲まで表示できるようにする
private fun hideSystemBars() {
// Android11とそれ未満で処理を分ける
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false)
window.isNavigationBarContrastEnforced = false
} else {
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
}
}
}
さらに消したいActivityに適用しているthemeでStatusBarとNavigationBarを透過させます。
themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.TransparentSystemBar" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
...
<!-- StatuBarとNavigationBarの色を透過させる -->
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
</resources>
以上です。