diff options
| author | 2015-07-20 20:40:10 +0000 | |
|---|---|---|
| committer | 2015-07-20 20:40:10 +0000 | |
| commit | 91bb9d0a8489068c88d9d2496d9e806cf4094df3 (patch) | |
| tree | cd35607b0aca1b00bd4b1b2ce15bcfb66d758e34 | |
| parent | ddb33d7d879159471cee10bf471a6815e76ac376 (diff) | |
| parent | 9bdb7bfd35a4b1faa5cbafeb3f1e20ff34e7b0e1 (diff) | |
am 9bdb7bfd: Merge "Bidi-wrap the results of format[Short]FileSize()." into mnc-dev
* commit '9bdb7bfd35a4b1faa5cbafeb3f1e20ff34e7b0e1':
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} */ |