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 ecaf6228..6de50b2d 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 12254c7b..c3595753 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 c795ced0..efabfea4 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">