Настройка Android с TextView для текста на иврите?
Я устанавливаю текст в TextView из строкового ресурса. Обычно иврит работает в формате справа налево. Когда я устанавливаю текст, он устанавливает формат текста справа налево в LG, Samsung, Sony Phone, но в HTC это не работает. Работает в формате слева направо в HTC. Даже я установил Gravity для TextView в файле Java.
Размер текста в TextView должен соответствовать размеру экрана. Например, если это 320 х 480, то он отображается в 4 строки, но если это Galaxy Tab, то может быть 2 строки.
Вот мой фрагмент кода:
В Java:
private TextView mVersionInfo, mVersionDescriptionOne, mVersionDescriptionTwo, mVersionDescriptionThree;
mVersionInfo = (TextView)findViewById(R.id.VersionInfo);
mVersionDescriptionOne = (TextView)findViewById(R.id.VersionDesc1);
mVersionDescriptionTwo = (TextView)findViewById(R.id.VersionDesc2);
mVersionDescriptionThree = (TextView)findViewById(R.id.VersionDesc3);
mVersionDescriptionOne.setGravity(Gravity.RIGHT);
mVersionDescriptionTwo.setGravity(Gravity.RIGHT);
mVersionDescriptionThree.setGravity(Gravity.RIGHT);
в XML:
<TextView android:id="@+id/VersionDesc1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/versiondesc1" android:textColor="#000000"
android:layout_marginTop="5dip" android:gravity="right"
android:layout_alignParentRight="true" android:layout_marginRight="10dip"
android:layout_below="@+id/Share" android:textSize="13sp"
android:layout_alignRight="@+id/Body" />
<TextView android:id="@+id/VersionDesc2"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/versiondesc2" android:textColor="#000000"
android:layout_alignParentRight="true" android:layout_marginRight="10dip"
android:layout_below="@+id/VersionDesc1" android:textSize="13sp"
android:layout_marginTop="5dip" android:gravity="right"
android:layout_alignRight="@+id/Body" />
<TextView android:id="@+id/VersionDesc3"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/versiondesc3" android:textColor="#000000"
android:layout_alignParentRight="true" android:layout_marginRight="10dip"
android:layout_below="@+id/VersionDesc2" android:textSize="13sp"
android:layout_marginTop="5dip" android:gravity="right"
android:layout_alignRight="@+id/Body" />
В строковом ресурсе:
<string name="versiondesc1">האפליקציה מתחברת לאתר הספק הסלולרי כדי להציג את מצב החשבון. לעיתים, כשאתר הספק איננו עובד תקין לא יהיה ניתן לקבל מידע. באם אתר הספק ישתנה האפליקציה עלולה להפסיק לעבוד. במצב כזה האפליקציה תחזור לעבודה תקינה מיד לאחר שאנו נתאים את שרת התוכנה שלנו לשינויים.</string>
<string name="versiondesc2">הערה: אנחנו לא מייצגים את חברות הסלולר ולא נמצאים איתן בקשר מסוג כלשהו!</string>
<string name="versiondesc3">אם נתקלת בבעיה, השתמש/י בכפתור יצירת קשר על מנת שנוכל לפתור אותה. נשמח לקבל כל משוב על האפליקציה.</string>
Что не так с моим кодом?
Любой, кто работал с другим языком, пожалуйста, направьте меня сюда.
Благодарю.
2 ответа
Гравитация влияет только на выравнивание и не устанавливает базовое направление для текста. То, что это работает на некоторых устройствах, а не на других, может быть проблемой шрифта или, возможно, проблемой версии ОС. Попробуйте добавить символ "ПРАВО" - "ВЛЕВО" (\u200F) в начале текста. Это может помочь дисплею на HTC и не повредит ничего на устройствах, где он уже работает.
Вот пример из моей еврейской строки xml, благодаря ответу Теда Хоппа:
вам нужно добавить '\u200e' перед символом, который вызывает у вас проблему:
<string name="basic_text1">המר על תוצאת המשחק\u200e:</string>
и результат будет:
:המר על תוצאת המשחק