From ed22b6e1051de9370f27047887f1a24e4d094229 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Wed, 23 Mar 2022 22:52:32 +0800 Subject: [PATCH] Set placeholder summary for SettingsInjector Currently, injected service could return null or empty string for summary, but it could cause settings item shift around on phone. Use a not empty placeholder string could solve this issue. Bug: 183471902 Test: On Pixel Phone Change-Id: I14538f4038c5ddbf45b6d42ad0c00bab487e835a --- packages/SettingsLib/res/values/strings.xml | 4 +++- .../settingslib/location/SettingsInjector.java | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 1c1e1ba32f00c..a9f5f85824037 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -410,12 +410,14 @@ No defaults set + +   Text-to-speech settings Text-to-speech output - + Speech rate Speed at which the text is spoken diff --git a/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java b/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java index ea5105bd9e0d5..6fb01797fbf4f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java +++ b/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java @@ -35,6 +35,7 @@ import android.os.Messenger; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; +import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AttributeSet; @@ -449,17 +450,22 @@ public class SettingsInjector { if (setting == null) { return; } - final Preference preference = setting.preference; Bundle bundle = msg.getData(); - boolean enabled = bundle.getBoolean(SettingInjectorService.ENABLED_KEY, true); - String summary = bundle.getString(SettingInjectorService.SUMMARY_KEY, null); if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, setting + ": received " + msg + ", bundle: " + bundle); } - preference.setSummary(summary); + boolean enabled = bundle.getBoolean(SettingInjectorService.ENABLED_KEY, true); + String summary = bundle.getString(SettingInjectorService.SUMMARY_KEY); + final Preference preference = setting.preference; + if (TextUtils.isEmpty(summary)) { + // Set a placeholder summary when received empty summary from injected service. + // This is necessary to avoid preference height change. + preference.setSummary(R.string.summary_placeholder); + } else { + preference.setSummary(summary); + } preference.setEnabled(enabled); - mHandler.sendMessage( - mHandler.obtainMessage(WHAT_RECEIVED_STATUS, setting)); + mHandler.sendMessage(mHandler.obtainMessage(WHAT_RECEIVED_STATUS, setting)); } }