From df6a1c73e46439ee9f0f012bacd98e395d5deb36 Mon Sep 17 00:00:00 2001 From: Steffen Winter Date: Sun, 17 May 2026 23:59:53 +0200 Subject: [PATCH] Fix drawer being drawn behind status bar Before this commit the Gadgetbridge logo in the open navigation drawer was partly cut of due to missing window insets on the drawer content. --- .../activities/ControlCenterv2.java | 23 +++++++++++++------ .../main/res/layout/main_drawer_header.xml | 9 ++++---- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index 59c1ece6cf..dcef446caf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -39,8 +39,11 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; import androidx.core.view.GravityCompat; import androidx.core.view.MenuProvider; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -171,11 +174,17 @@ public class ControlCenterv2 extends AppCompatActivity } } - // Initialize drawer NavigationView drawerNavigationView = findViewById(R.id.nav_view); drawerNavigationView.setNavigationItemSelectedListener(this); + View navigationHeaderView = drawerNavigationView.getHeaderView(0); + ViewCompat.setOnApplyWindowInsetsListener(navigationHeaderView, (view, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout()); + view.setPadding(view.getPaddingLeft(), insets.top, view.getPaddingRight(), view.getPaddingBottom()); + return windowInsets; + }); + // Initialize bottom navigation BottomNavigationView navigationView = findViewById(R.id.bottom_nav_bar); if (activityTrackerAvailable && prefs.getBoolean("display_bottom_navigation_bar", true)) { @@ -318,10 +327,10 @@ public class ControlCenterv2 extends AppCompatActivity @Override public void onSaveInstanceState(@NonNull Bundle outState) { - if (clDialog != null){ - outState.putBoolean("cl", clDialog.isShowing()); - } - super.onSaveInstanceState(outState); + if (clDialog != null) { + outState.putBoolean("cl", clDialog.isShowing()); + } + super.onSaveInstanceState(outState); } @Override @@ -402,9 +411,9 @@ public class ControlCenterv2 extends AppCompatActivity } private void handleShortcut(Intent intent) { - if(ACTION_CONNECT.equals(intent.getAction())) { + if (ACTION_CONNECT.equals(intent.getAction())) { String btDeviceAddress = intent.getStringExtra("device"); - if(btDeviceAddress!=null){ + if (btDeviceAddress != null) { GBDevice candidate = DeviceHelper.getInstance().findAvailableDevice(btDeviceAddress); if (candidate != null && !candidate.isConnected()) { GBApplication.deviceService(candidate).connect(); diff --git a/app/src/main/res/layout/main_drawer_header.xml b/app/src/main/res/layout/main_drawer_header.xml index 0a335c103b..fffa805ef6 100644 --- a/app/src/main/res/layout/main_drawer_header.xml +++ b/app/src/main/res/layout/main_drawer_header.xml @@ -6,11 +6,10 @@ android:background="?attr/drawer_header_color" android:gravity="bottom" android:orientation="vertical" - android:layout_marginTop="16dp" - android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin"> + android:paddingBottom="@dimen/activity_vertical_margin"> + android:textColor="?attr/drawer_title_color" />