Fix RTL issues in Dialer.

+ Force LTR if textviews show numbers.
+ Change history header with to match_parent so it aligns tor the
right properly. Before, it was on the left, even in RTL languages.

Bug: 17776561
Change-Id: I53907496fe4e7a12f8962d4bc7295ed7a294c6e5
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 32d61a2..e2ab130 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -32,6 +32,8 @@
 import android.provider.VoicemailContract.Voicemails;
 import android.telecom.PhoneAccount;
 import android.telephony.TelephonyManager;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -134,6 +136,7 @@
     private LinearLayout mVoicemailHeader;
 
     private Uri mVoicemailUri;
+    private BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
 
     /** Whether we should show "edit number before call" in the options menu. */
     private boolean mHasEditNumberBeforeCallOption;
@@ -425,24 +428,25 @@
 
                 final CharSequence callLocationOrType = getNumberTypeOrLocation(firstDetails);
 
-                final CharSequence displayNumber =
-                        mPhoneNumberHelper.getDisplayNumber(
-                                firstDetails.number,
-                                firstDetails.numberPresentation,
-                                firstDetails.formattedNumber);
+                final CharSequence displayNumber = mPhoneNumberHelper.getDisplayNumber(
+                        firstDetails.number,
+                        firstDetails.numberPresentation,
+                        firstDetails.formattedNumber);
+                final String displayNumberStr = mBidiFormatter.unicodeWrap(
+                        displayNumber.toString(), TextDirectionHeuristics.LTR);
+
 
                 if (!TextUtils.isEmpty(firstDetails.name)) {
                     mCallerName.setText(firstDetails.name);
-                    mCallerNumber.setText(callLocationOrType + " " + displayNumber);
+                    mCallerNumber.setText(callLocationOrType + " " + displayNumberStr);
                 } else {
-                    mCallerName.setText(displayNumber);
+                    mCallerName.setText(displayNumberStr);
                     if (!TextUtils.isEmpty(callLocationOrType)) {
                         mCallerNumber.setText(callLocationOrType);
                         mCallerNumber.setVisibility(View.VISIBLE);
                     } else {
                         mCallerNumber.setVisibility(View.GONE);
                     }
-
                 }
 
                 if (!TextUtils.isEmpty(firstDetails.accountLabel)) {