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
This commit is contained in:
@@ -410,12 +410,14 @@
|
||||
<string name="launch_defaults_none">No defaults set</string>
|
||||
<!-- DO NOT TRANSLATE Empty summary for dynamic preferences -->
|
||||
<string name="summary_empty" translatable="false"></string>
|
||||
<!-- DO NOT TRANSLATE Summary placeholder -->
|
||||
<string name="summary_placeholder" translatable="false"> </string>
|
||||
<!-- Text-To-Speech (TTS) settings --><skip />
|
||||
<!-- Name of the TTS package as listed by the package manager. -->
|
||||
<string name="tts_settings">Text-to-speech settings</string>
|
||||
<!-- TTS option item name in the main settings screen -->
|
||||
<string name="tts_settings_title">Text-to-speech output</string>
|
||||
<!-- On main TTS Settings screen, in default settings section, setting default speech rate for synthesized voice -->
|
||||
<!-- On main TTS Settings screen, in default settings section, setting default speech rate for synthesized voice -->
|
||||
<string name="tts_default_rate_title">Speech rate</string>
|
||||
<!-- On main TTS Settings screen, summary for default speech rate for synthesized voice -->
|
||||
<string name="tts_default_rate_summary">Speed at which the text is spoken</string>
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user