diff options
| author | 2015-07-20 20:56:57 +0000 | |
|---|---|---|
| committer | 2015-07-20 20:56:57 +0000 | |
| commit | e043a74bd0598ba2abb68d94d6d8a1f7ea5a2ccb (patch) | |
| tree | f82a2b96bcea58e9e66de6242e82007fa889da88 | |
| parent | 5038b92e6adae454feb6095092bdaff80ecf1db3 (diff) | |
| parent | 91bb9d0a8489068c88d9d2496d9e806cf4094df3 (diff) | |
am 91bb9d0a: am 9bdb7bfd: Merge "Bidi-wrap the results of format[Short]FileSize()." into mnc-dev
* commit '91bb9d0a8489068c88d9d2496d9e806cf4094df3':
Bidi-wrap the results of format[Short]FileSize().
| -rw-r--r-- | core/java/android/text/format/Formatter.java | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/core/java/android/text/format/Formatter.java b/core/java/android/text/format/Formatter.java index 82689b98e64b..b5068b2e7ccc 100644 --- a/core/java/android/text/format/Formatter.java +++ b/core/java/android/text/format/Formatter.java @@ -16,12 +16,18 @@ package android.text.format; +import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.content.res.Resources; +import android.text.BidiFormatter; +import android.text.TextUtils; +import android.view.View; import android.net.NetworkUtils; import android.net.TrafficStats; +import java.util.Locale; + /** * Utility class to aid in formatting common values that are not covered * by the {@link java.util.Formatter} class in {@link java.util} @@ -46,8 +52,23 @@ public final class Formatter { } } + /* Wraps the source string in bidi formatting characters in RTL locales */ + private static String bidiWrap(@NonNull Context context, String source) { + final Locale locale = context.getResources().getConfiguration().locale; + if (TextUtils.getLayoutDirectionFromLocale(locale) == View.LAYOUT_DIRECTION_RTL) { + return BidiFormatter.getInstance(true /* RTL*/).unicodeWrap(source); + } else { + return source; + } + } + /** - * Formats a content size to be in the form of bytes, kilobytes, megabytes, etc + * Formats a content size to be in the form of bytes, kilobytes, megabytes, etc. + * + * If the context has a right-to-left locale, the returned string is wrapped in bidi formatting + * characters to make sure it's displayed correctly if inserted inside a right-to-left string. + * (This is useful in cases where the unit strings, like "MB", are left-to-right, but the + * locale is right-to-left.) * * @param context Context to use to load the localized units * @param sizeBytes size value to be formatted, in bytes @@ -58,8 +79,8 @@ public final class Formatter { return ""; } final BytesResult res = formatBytes(context.getResources(), sizeBytes, 0); - return context.getString(com.android.internal.R.string.fileSizeSuffix, - res.value, res.units); + return bidiWrap(context, context.getString(com.android.internal.R.string.fileSizeSuffix, + res.value, res.units)); } /** @@ -71,8 +92,8 @@ public final class Formatter { return ""; } final BytesResult res = formatBytes(context.getResources(), sizeBytes, FLAG_SHORTER); - return context.getString(com.android.internal.R.string.fileSizeSuffix, - res.value, res.units); + return bidiWrap(context, context.getString(com.android.internal.R.string.fileSizeSuffix, + res.value, res.units)); } /** {@hide} */ |