Fix incorrect phone number display in Bidi language
"+ country code" should always be displayed LTR as with phone number
regardless of whether the language is LTR or RTL. Without this commit,
e.g. "+0123456789" is wrongly displayed as "0123456789+".
Bug: 35180168
Test: Manually check correct display in Bidi language
Change-Id: I8643db9e31fe01b6b06bbafe2b4d11c6f400be2a
diff --git a/src/com/android/phone/ADNList.java b/src/com/android/phone/ADNList.java
index 2e2db31..cdd136d 100644
--- a/src/com/android/phone/ADNList.java
+++ b/src/com/android/phone/ADNList.java
@@ -28,7 +28,10 @@
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
import android.util.Log;
+import android.view.View;
import android.view.Window;
import android.widget.CursorAdapter;
import android.widget.SimpleCursorAdapter;
@@ -161,9 +164,31 @@
}
protected CursorAdapter newAdapter() {
- return new SimpleCursorAdapter(this,
- android.R.layout.simple_list_item_2,
- mCursor, COLUMN_NAMES, VIEW_NAMES);
+ SimpleCursorAdapter sca = new SimpleCursorAdapter(this,
+ android.R.layout.simple_list_item_2,
+ mCursor, COLUMN_NAMES, VIEW_NAMES);
+
+ // This code block is for displaying a phone number including "+ country code" correctly
+ // in bidirectional language (b/35180168).
+ // Without this code, e.g. "+0123456789" is wrongly displayed as "0123456789+".
+ sca.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
+ public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
+ view.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+ if (columnIndex == NUMBER_COLUMN) {
+ String num = cursor.getString(NUMBER_COLUMN);
+ if (num != null) {
+ BidiFormatter bf = BidiFormatter.getInstance();
+ num = bf.unicodeWrap(num, TextDirectionHeuristics.LTR, true);
+ }
+ if (view instanceof TextView) {
+ ((TextView) view).setText(num);
+ }
+ return true;
+ }
+ return false;
+ }
+ });
+ return sca;
}
private void displayProgress(boolean loading) {
diff --git a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
index 23ef0bb..b8a761c 100644
--- a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
@@ -243,6 +243,7 @@
mNumberField = (EditText) findViewById(R.id.fdn_number);
if (mNumberField != null) {
+ mNumberField.setTextDirection(View.TEXT_DIRECTION_LTR);
mNumberField.setKeyListener(DialerKeyListener.getInstance());
mNumberField.setOnFocusChangeListener(mOnFocusChangeHandler);
mNumberField.setOnClickListener(mClicked);