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();