From 613fbacdbf4952157baba97f16a4314a34ca7b60 Mon Sep 17 00:00:00 2001 From: Michael W Date: Sun, 18 Jun 2023 15:47:32 +0200 Subject: [PATCH] Updater: Fix header margin * Instead of hardcoding it to 86dp (which was probably fine when we didn't have cutouts, calculate the required top margin by adding top inset and status bar height and applying it dynamically * Increase compile and min sdk versions to avoid warnings - we compile using the build sdk (33) when building inline anyway Change-Id: I80444e5a2247730f06af461a1cce7ac36c6c9631 --- app/build.gradle.kts | 2 +- .../lineageos/updater/UpdatesActivity.java | 21 +++++++++++++++++++ .../layout-television/activity_updates.xml | 1 + app/src/main/res/layout/activity_updates.xml | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ecaf622..6de50b2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,7 +17,7 @@ android { defaultConfig { applicationId = "org.lineageos.updater" - minSdk = 27 + minSdk = 30 targetSdk = 33 versionCode = 1 versionName = "1.0" diff --git a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java index 12254c7..c359575 100644 --- a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java +++ b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java @@ -33,6 +33,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.SystemProperties; import android.util.Log; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -41,6 +42,7 @@ import android.view.View; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; +import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; @@ -51,6 +53,7 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SwitchCompat; import androidx.appcompat.widget.Toolbar; +import androidx.core.view.WindowInsetsCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; @@ -146,6 +149,24 @@ public class UpdatesActivity extends UpdatesListActivity { if (actionBar != null) { actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayHomeAsUpEnabled(true); + final int statusBarHeight; + TypedValue tv = new TypedValue(); + if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { + statusBarHeight = TypedValue.complexToDimensionPixelSize( + tv.data, getResources().getDisplayMetrics()); + } else { + statusBarHeight = 0; + } + RelativeLayout headerContainer = findViewById(R.id.header_container); + recyclerView.setOnApplyWindowInsetsListener((view, insets) -> { + int top = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top; + CollapsingToolbarLayout.LayoutParams lp = + (CollapsingToolbarLayout.LayoutParams) + headerContainer.getLayoutParams(); + lp.topMargin = top + statusBarHeight; + headerContainer.setLayoutParams(lp); + return insets; + }); } } diff --git a/app/src/main/res/layout-television/activity_updates.xml b/app/src/main/res/layout-television/activity_updates.xml index c795ced..efabfea 100644 --- a/app/src/main/res/layout-television/activity_updates.xml +++ b/app/src/main/res/layout-television/activity_updates.xml @@ -11,6 +11,7 @@ android:baselineAligned="false">