Настройка Android с TextView для текста на иврите? - PullRequest
8 голосов
/ 10 июня 2011

Я устанавливаю текст в TextView из строкового ресурса.Обычно иврит работает в формате справа налево.Когда я устанавливаю текст, он устанавливает формат текста справа налево в LG, Samsung, Sony Phone, но в HTC это не работает.Работает в формате слева направо в HTC.Даже я установил Gravity для TextView в файле Java.

Размер текста в TextView должен соответствовать размеру экрана.Например, если он равен 320 x 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 ]

31 голосов
/ 10 июня 2011

Гравитация влияет только на выравнивание и не устанавливает базовое направление для текста.То, что это работает на некоторых устройствах, а не на других, может быть проблемой шрифта или, возможно, проблемой версии ОС.Попробуйте добавить символ «ПРАВО» - «ВЛЕВО» (\ u200F) в начале текста.Это может помочь дисплею HTC и не повредит ничего на устройствах, где он уже работает.

3 голосов
/ 19 марта 2015

Вот пример из моей строки на иврите xml. Благодаря ответу Теда Хоппа:

вам нужно добавить '\ u200e' перед символом, который вызывает у вас проблему:

<string name="basic_text1">המר על תוצאת המשחק\u200e:</string>

и результат будет:

 :המר על תוצאת המשחק
...