diff --git a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java index e51bb45ebca21..3eb6ea98f118b 100644 --- a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java +++ b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java @@ -42,6 +42,7 @@ public class FooterPreference extends Preference { @VisibleForTesting View.OnClickListener mLearnMoreListener; private CharSequence mContentDescription; + private CharSequence mLearnMoreText; private CharSequence mLearnMoreContentDescription; private FooterLearnMoreSpan mLearnMoreSpan; @@ -69,7 +70,12 @@ public class FooterPreference extends Preference { TextView learnMore = holder.itemView.findViewById(R.id.settingslib_learn_more); if (learnMore != null && mLearnMoreListener != null) { learnMore.setVisibility(View.VISIBLE); - SpannableString learnMoreText = new SpannableString(learnMore.getText()); + if (TextUtils.isEmpty(mLearnMoreText)) { + mLearnMoreText = learnMore.getText(); + } else { + learnMore.setText(mLearnMoreText); + } + SpannableString learnMoreText = new SpannableString(mLearnMoreText); if (mLearnMoreSpan != null) { learnMoreText.removeSpan(mLearnMoreSpan); } @@ -122,6 +128,18 @@ public class FooterPreference extends Preference { return mContentDescription; } + /** + * Sets the learn more text. + * + * @param learnMoreText The string of the learn more text. + */ + public void setLearnMoreText(CharSequence learnMoreText) { + if (!TextUtils.equals(mLearnMoreText, learnMoreText)) { + mLearnMoreText = learnMoreText; + notifyChanged(); + } + } + /** * To set content description of the learn more text. This can use for talkback * environment if developer wants to have a customization content. diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java index 10ac829186d40..3b18c57e28fa2 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java @@ -63,6 +63,20 @@ public class FooterPreferenceTest { assertThat(mFooterPreference.getTitle()).isEqualTo("summary"); } + @Test + public void setLearnMoreText_shouldSetAsTextInLearnMore() { + final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( + LayoutInflater.from(mContext).inflate(R.layout.preference_footer, null)); + mFooterPreference.setLearnMoreText("Custom learn more"); + mFooterPreference.setLearnMoreAction(view -> { /* do nothing */ } /* listener */); + + mFooterPreference.onBindViewHolder(holder); + + assertThat(((TextView) holder.findViewById( + R.id.settingslib_learn_more)).getText().toString()) + .isEqualTo("Custom learn more"); + } + @Test public void setContentDescription_contentSet_shouldGetSameContentDescription() { mFooterPreference.setContentDescription("test");