diff --git a/res/values/strings.xml b/res/values/strings.xml index aba7b66add6..e0caa955e1c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7248,13 +7248,13 @@ Ethernet - ^1 ^2 cellular data + ^1 cellular data - ^1 ^2 Wi-Fi data + ^1 Wi-Fi data - ^1 ^2 ethernet data + ^1 ethernet data %1$s Data warning diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index 51804c132de..8de6a844537 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -32,8 +32,12 @@ import android.support.v7.preference.PreferenceScreen; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import android.text.BidiFormatter; +import android.text.Spannable; +import android.text.SpannableString; import android.text.TextUtils; import android.text.format.Formatter; +import android.text.style.RelativeSizeSpan; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -183,15 +187,35 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { updateState(); } + private static CharSequence formatTitle(Context context, String template, long usageLevel) { + final float LARGER_SIZE = 1.25f * 1.25f; // (1/0.8)^2 + final float SMALLER_SIZE = 1.0f / LARGER_SIZE; // 0.8^2 + final int FLAGS = Spannable.SPAN_INCLUSIVE_INCLUSIVE; + + final Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(), + usageLevel, Formatter.FLAG_SHORTER); + final SpannableString enlargedValue = new SpannableString(usedResult.value); + enlargedValue.setSpan(new RelativeSizeSpan(LARGER_SIZE), 0, enlargedValue.length(), FLAGS); + + final SpannableString amountTemplate = new SpannableString( + context.getString(com.android.internal.R.string.fileSizeSuffix) + .replace("%1$s", "^1").replace("%2$s", "^2")); + final CharSequence formattedUsage = TextUtils.expandTemplate(amountTemplate, + enlargedValue, usedResult.units); + + final SpannableString fullTemplate = new SpannableString(template); + fullTemplate.setSpan(new RelativeSizeSpan(SMALLER_SIZE), 0, fullTemplate.length(), FLAGS); + return TextUtils.expandTemplate(fullTemplate, + BidiFormatter.getInstance().unicodeWrap(formattedUsage)); + } + private void updateState() { DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo( mDefaultTemplate); Context context = getContext(); if (mSummaryPreference != null) { - Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(), - info.usageLevel, Formatter.FLAG_SHORTER); - mSummaryPreference.setTitle(TextUtils.expandTemplate(getText(mDataUsageTemplate), - usedResult.value, usedResult.units)); + mSummaryPreference.setTitle( + formatTitle(context, getString(mDataUsageTemplate), info.usageLevel)); long limit = info.limitLevel; if (limit <= 0) { limit = info.warningLevel;