Skip to content

Commit f7f4aad

Browse files
authored
Fix toolbar drawing under the status bar in 4 appbar screens (#60)
The JSON config editor, QR scanner, assets manager, and STUN test screens rendered their toolbar title/actions underneath the system status bar (clock/wifi/battery overlap). Root cause: each layout's `<include layout="@layout/layout_appbar">` carried android:id="@+id/appbar_include", which overrides the included AppBarLayout's own R.id.appbar. ThemedActivity applies the top status-bar inset via findViewById<AppBarLayout>(R.id.appbar) — which returned null in these layouts, so no top padding was applied. Fix (matches layout_config_settings, which renders correctly): drop the android:id from the <include> so R.id.appbar survives and ThemedActivity pads it. The toolbar is now resolved via findViewById<Toolbar>(R.id.toolbar) instead of the removed binding.appbarInclude.toolbar accessor. Affected: layout_edit_config / ConfigEditActivity, layout_scanner / ScannerActivity, layout_assets / AssetsActivity, layout_stun / StunActivity. Verified on device (Redmi Note 9, A13): config editor toolbar now sits below the status bar; editor, themes, and extended keyboard unaffected.
1 parent 265ce99 commit f7f4aad

8 files changed

Lines changed: 11 additions & 8 deletions

File tree

app/src/main/java/io/nekohasekai/sagernet/ui/AssetsActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.view.Menu
77
import android.view.MenuItem
88
import android.view.ViewGroup
99
import androidx.activity.result.contract.ActivityResultContracts
10+
import androidx.appcompat.widget.Toolbar
1011
import androidx.core.view.isInvisible
1112
import androidx.recyclerview.widget.ItemTouchHelper
1213
import androidx.recyclerview.widget.RecyclerView
@@ -38,7 +39,7 @@ class AssetsActivity : ThemedActivity() {
3839
layout = binding
3940
setContentView(binding.root)
4041

41-
setSupportActionBar(binding.appbarInclude.toolbar)
42+
setSupportActionBar(findViewById<Toolbar>(R.id.toolbar))
4243
supportActionBar?.apply {
4344
setTitle(R.string.route_assets)
4445
setDisplayHomeAsUpEnabled(true)

app/src/main/java/io/nekohasekai/sagernet/ui/ScannerActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import android.view.MenuItem
1313
import android.widget.Toast
1414
import androidx.activity.result.contract.ActivityResultContracts
1515
import androidx.annotation.OptIn as AndroidXOptIn
16+
import androidx.appcompat.widget.Toolbar
1617
import androidx.camera.core.CameraSelector
1718
import androidx.camera.core.ExperimentalGetImage
1819
import androidx.camera.core.ImageAnalysis
@@ -72,7 +73,7 @@ class ScannerActivity : ThemedActivity() {
7273
if (Build.VERSION.SDK_INT >= 25) getSystemService<ShortcutManager>()!!.reportShortcutUsed("scan")
7374
binding = LayoutScannerBinding.inflate(layoutInflater)
7475
setContentView(binding.root)
75-
setSupportActionBar(binding.appbarInclude.toolbar)
76+
setSupportActionBar(findViewById<Toolbar>(R.id.toolbar))
7677
supportActionBar?.apply {
7778
setDisplayHomeAsUpEnabled(true)
7879
setHomeAsUpIndicator(R.drawable.ic_navigation_close)

app/src/main/java/io/nekohasekai/sagernet/ui/StunActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.nekohasekai.sagernet.ui
22

33
import android.os.Bundle
44
import androidx.appcompat.app.AlertDialog
5+
import androidx.appcompat.widget.Toolbar
56
import androidx.core.view.isVisible
67
import io.nekohasekai.sagernet.R
78
import io.nekohasekai.sagernet.databinding.LayoutStunBinding
@@ -19,7 +20,7 @@ class StunActivity : ThemedActivity() {
1920

2021
binding = LayoutStunBinding.inflate(layoutInflater)
2122
setContentView(binding.root)
22-
setSupportActionBar(binding.appbarInclude.toolbar)
23+
setSupportActionBar(findViewById<Toolbar>(R.id.toolbar))
2324
supportActionBar?.apply {
2425
setTitle(R.string.stun_test)
2526
setDisplayHomeAsUpEnabled(true)

app/src/main/java/io/nekohasekai/sagernet/ui/profile/ConfigEditActivity.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.view.MenuItem
99
import android.view.ViewGroup.MarginLayoutParams
1010
import androidx.activity.addCallback
1111
import androidx.appcompat.app.AlertDialog
12+
import androidx.appcompat.widget.Toolbar
1213
import androidx.core.view.ViewCompat
1314
import androidx.core.view.WindowInsetsCompat
1415
import androidx.core.view.updateLayoutParams
@@ -67,7 +68,10 @@ class ConfigEditActivity : ThemedActivity() {
6768
binding = LayoutEditConfigBinding.inflate(layoutInflater)
6869
setContentView(binding.root)
6970

70-
setSupportActionBar(binding.appbarInclude.toolbar)
71+
// The appbar is included WITHOUT an android:id on the <include> so the included
72+
// AppBarLayout keeps its own R.id.appbar, which ThemedActivity uses to apply the top
73+
// status-bar inset as padding (otherwise the toolbar draws under the status bar).
74+
setSupportActionBar(findViewById<Toolbar>(R.id.toolbar))
7175
supportActionBar?.apply {
7276
setTitle(R.string.config_settings)
7377
setDisplayHomeAsUpEnabled(true)

app/src/main/res/layout/layout_assets.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
android:orientation="vertical">
1212

1313
<include
14-
android:id="@+id/appbar_include"
1514
layout="@layout/layout_appbar"
1615
android:layout_width="match_parent"
1716
android:layout_height="wrap_content" />

app/src/main/res/layout/layout_edit_config.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
android:orientation="vertical">
77

88
<include
9-
android:id="@+id/appbar_include"
109
layout="@layout/layout_appbar"
1110
android:layout_width="match_parent"
1211
android:layout_height="wrap_content" />

app/src/main/res/layout/layout_scanner.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
android:layout_height="match_parent" />
1616

1717
<include
18-
android:id="@+id/appbar_include"
1918
layout="@layout/layout_appbar"
2019
android:layout_width="match_parent"
2120
android:layout_height="wrap_content" />

app/src/main/res/layout/layout_stun.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
android:orientation="vertical">
1313

1414
<include
15-
android:id="@+id/appbar_include"
1615
layout="@layout/layout_appbar"
1716
android:layout_width="match_parent"
1817
android:layout_height="wrap_content" />

0 commit comments

Comments
 (0)