From 9507c611558e08f065c11d760054e3dd5970cdf9 Mon Sep 17 00:00:00 2001 From: Qiang Chen Date: Fri, 28 Jun 2024 10:35:04 +0530 Subject: [PATCH] Settings: Adapt edge-to-edge enforcement Android 15 enables edge-to-edge by default. WI-FI info should do the adaptation, or not some UIs may be obscured by system bars. Apply window insets for WifiConfigInfo and WifiStatusTest activity content layout. Bug: 340713923 Test: Manaul Change-Id: Iecaadfa1be55544809b240df9c2097e3b4d053f9 --- .../android/settings/wifi/WifiConfigInfo.java | 1 + .../android/settings/wifi/WifiStatusTest.java | 1 + src/com/android/settings/wifi/WifiUtils.java | 37 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/src/com/android/settings/wifi/WifiConfigInfo.java b/src/com/android/settings/wifi/WifiConfigInfo.java index 0de306396a2..16a4446772a 100644 --- a/src/com/android/settings/wifi/WifiConfigInfo.java +++ b/src/com/android/settings/wifi/WifiConfigInfo.java @@ -37,6 +37,7 @@ public class WifiConfigInfo extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + WifiUtils.setupEdgeToEdge(this); mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); setContentView(R.layout.wifi_config_info); diff --git a/src/com/android/settings/wifi/WifiStatusTest.java b/src/com/android/settings/wifi/WifiStatusTest.java index b4f3ab6ca4a..b9b1d70373e 100644 --- a/src/com/android/settings/wifi/WifiStatusTest.java +++ b/src/com/android/settings/wifi/WifiStatusTest.java @@ -115,6 +115,7 @@ public class WifiStatusTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + WifiUtils.setupEdgeToEdge(this); mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); diff --git a/src/com/android/settings/wifi/WifiUtils.java b/src/com/android/settings/wifi/WifiUtils.java index 68d8bebd582..e307bcf9e0b 100644 --- a/src/com/android/settings/wifi/WifiUtils.java +++ b/src/com/android/settings/wifi/WifiUtils.java @@ -16,6 +16,8 @@ package com.android.settings.wifi; +import android.app.ActionBar; +import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.ContentResolver; @@ -32,8 +34,13 @@ import android.os.UserManager; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; +import android.util.TypedValue; +import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import com.android.settings.R; import com.android.settings.Utils; @@ -308,4 +315,34 @@ public class WifiUtils extends com.android.settingslib.wifi.WifiUtils { public static void setCanShowWifiHotspotCached(Boolean cached) { sCanShowWifiHotspotCached = cached; } + + /** + * Enable new edge to edge feature. + * + * @param activity the Activity need to setup the edge to edge feature. + */ + public static void setupEdgeToEdge(@NonNull Activity activity) { + final ActionBar actionBar = activity.getActionBar(); + if (actionBar == null) { + return; + } + + final TypedValue typedValue = new TypedValue(); + if (activity.getTheme().resolveAttribute( + com.android.internal.R.attr.actionBarSize, typedValue, true)) { + ViewCompat.setOnApplyWindowInsetsListener(activity.findViewById(android.R.id.content), + (v, windowInsets) -> { + Insets insets = windowInsets.getInsets( + WindowInsetsCompat.Type.systemBars() | + WindowInsetsCompat.Type.ime()); + + // Apply the insets paddings to the view. + v.setPadding(insets.left, insets.top, insets.right, insets.bottom); + + // Return CONSUMED if you don't want the window insets to keep being + // passed down to descendant views. + return WindowInsetsCompat.CONSUMED; + }); + } + } }