diff options
2 files changed, 33 insertions, 1 deletions
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 e51bb45ebca2..3eb6ea98f118 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); } @@ -123,6 +129,18 @@ public class FooterPreference extends Preference { } /** + * 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 10ac829186d4..3b18c57e28fa 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 @@ -64,6 +64,20 @@ public class FooterPreferenceTest { } @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"); |