diff --git a/res/layout/preference_category_bluetooth_no_padding.xml b/res/layout/preference_category_bluetooth_no_padding.xml
new file mode 100644
index 00000000000..9868eb4d63f
--- /dev/null
+++ b/res/layout/preference_category_bluetooth_no_padding.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java b/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java
index d62543bb64f..e7c4c19a3f0 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsAudioDeviceTypeController.java
@@ -38,6 +38,7 @@ import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
+import com.android.settings.flags.Flags;
import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LeAudioProfile;
@@ -134,6 +135,9 @@ public class BluetoothDetailsAudioDeviceTypeController extends BluetoothDetailsC
@Override
protected void init(PreferenceScreen screen) {
mProfilesContainer = screen.findPreference(getPreferenceKey());
+ if (Flags.enableBluetoothDeviceDetailsPolish()) {
+ mProfilesContainer.setLayoutResource(R.layout.preference_category_bluetooth_no_padding);
+ }
refresh();
}
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
index e42c6549f7d..d75e7da3f86 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
@@ -96,6 +96,7 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
new HashMap>();
private boolean mIsLeAudioToggleEnabled = false;
private boolean mIsLeAudioOnlyDevice = false;
+ private boolean mHasExtraSpace;
@VisibleForTesting
PreferenceCategory mProfilesContainer;
@@ -106,7 +107,8 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
LocalBluetoothManager manager,
CachedBluetoothDevice device,
Lifecycle lifecycle,
- @Nullable List invisibleProfiles) {
+ @Nullable List invisibleProfiles,
+ boolean hasExtraSpace) {
super(context, fragment, device, lifecycle);
mManager = manager;
mProfileManager = mManager.getProfileManager();
@@ -115,12 +117,17 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
if (invisibleProfiles != null) {
mInvisibleProfiles = Set.copyOf(invisibleProfiles);
}
+ mHasExtraSpace = hasExtraSpace;
}
@Override
protected void init(PreferenceScreen screen) {
mProfilesContainer = (PreferenceCategory)screen.findPreference(getPreferenceKey());
- mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ if (mHasExtraSpace) {
+ mProfilesContainer.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ } else {
+ mProfilesContainer.setLayoutResource(R.layout.preference_category_bluetooth_no_padding);
+ }
// Call refresh here even though it will get called later in onResume, to avoid the
// list of switches appearing to "pop" into the page.
refresh();
@@ -609,7 +616,11 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll
Preference preference = mProfilesContainer.findPreference(KEY_BOTTOM_PREFERENCE);
if (preference == null) {
preference = new Preference(mContext);
- preference.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ if (mHasExtraSpace) {
+ preference.setLayoutResource(R.layout.preference_bluetooth_profile_category);
+ } else {
+ preference.setLayoutResource(R.layout.preference_category_bluetooth_no_padding);
+ }
preference.setEnabled(false);
preference.setKey(KEY_BOTTOM_PREFERENCE);
preference.setOrder(ORDINAL);
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index a1a22be827c..355fae92e45 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -458,7 +458,7 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
controllers.add(new BluetoothDetailsSpatialAudioController(context, this, mCachedDevice,
lifecycle));
controllers.add(new BluetoothDetailsProfilesController(context, this, mManager,
- mCachedDevice, lifecycle, invisibleProfiles));
+ mCachedDevice, lifecycle, invisibleProfiles, invisibleProfiles == null));
controllers.add(new BluetoothDetailsMacAddressController(context, this, mCachedDevice,
lifecycle));
controllers.add(new StylusDevicesController(context, mInputDevice, mCachedDevice,
diff --git a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt
index 66fba70e7c0..47fda7455bc 100644
--- a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt
+++ b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsMoreSettingsFragment.kt
@@ -143,6 +143,7 @@ class DeviceDetailsMoreSettingsFragment : DashboardFragment() {
formatter.getInvisibleBluetoothProfiles(
FragmentTypeModel.DeviceDetailsMoreSettingsFragment
),
+ false,
),
BluetoothDetailsAudioDeviceTypeController(
context,
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java
index d137d8287e8..e21bf9a605e 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsProfilesControllerTest.java
@@ -656,7 +656,7 @@ public class BluetoothDetailsProfilesControllerTest extends BluetoothDetailsCont
private void initController(List invisibleProfiles) {
mController = new BluetoothDetailsProfilesController(mContext, mFragment, mLocalManager,
- mCachedDevice, mLifecycle, invisibleProfiles);
+ mCachedDevice, mLifecycle, invisibleProfiles, true);
mProfiles.setKey(mController.getPreferenceKey());
mController.mProfilesContainer = mProfiles;
mScreen.removeAll();