带有TextView的Android设置如何显示希伯来文本?

9
我将从字符串资源中为TextView设置文本。通常,希伯来语以从右到左的格式工作。当我设置文本时,在LG、三星和索尼手机上,它会以从右到左的格式设置文本,但在HTC上却不起作用。在HTC上,它以从左到右的格式工作。即使我在Java文件中将Gravity设置为TextView。
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>

我的代码出了什么问题?

有经验的其他语言开发者,请在这里指导我。

谢谢。


@niky,请查看我上传的图片。它设置希伯来语文本,但在文本末尾留下了轻微的可见标记。谢谢。 - user744881
bugto和done图像不可用 :( - AlikElzin-kilaka
@kilaka 服务器数据已清除。对此给您带来的不便深感抱歉。 - user744881
你是否成功在textView中显示希伯来语而无需使用任何第三方库?(即在textView中显示Unicode) - Elad Benda
2个回答

32

重力只影响文本的对齐方式,而不会设置文本的基本方向。它在某些设备上起作用,在其他设备上可能是字体问题或操作系统版本问题。尝试在文本开头添加一个RIGHT-TO-LEFT MARK字符(\u200F)。这可能有助于HTC上的显示,并不会对已经正常工作的设备造成任何损害。


1
@AndroidVogue - Android的资源解析器不符合XML标准,否则在文本开头插入字符转义序列将是一件简单的事情。但由于这种方法行不通,最简单的方法就是直接在资源文件中输入或粘贴该字符。Eclipse应该能正确地将其保存为UTF-8。(在Windows中,您可以使用字符映射将200F复制到剪贴板中。它位于Unicode子范围常规标点符号下。)如果这样仍然不起作用,我唯一能建议的就是在代码中添加该字符。 - Ted Hopp
1
@Ted,所以我必须放置类似于这样的内容:<string name="versiondesc2">(\u200F) הערה: אנחנו לא מייצגים את חברות הסלולר ולא נמצאים איתן בקשר מסוג כלשהו!</string> 我放置正确了吗? - user744881
@TedHopp 谢谢您的帮助,是否有可能为应用程序中的所有文本添加自定义TextView中的字符? 像这样:StringBuilder stringBuilder = new StringBuilder(getText()); stringBuilder.insert(0, '\u200F'); setText(stringBuilder.toString()); - bentzy
@TedHopp 你知道有没有一个 Android 库可以在 API 8 平台及更高版本上添加对希伯来语的支持吗? :) 希望如愿以偿。 - bentzy
@Benny - 我不知道有什么方法可以将\u200F添加到所有文本视图中,除非像你建议的那样明确地执行它。我也不知道有任何希伯来支持库。KitKat(API级别19)具有相当好的希伯来支持(尽管仍然存在一些缺点,例如TextView滚动条自动在从右到左的文本中位于左侧)。 - Ted Hopp
显示剩余19条评论

3

这是我从希伯来语字符串xml中的一个例子,感谢Ted Hopp的回答:

你需要在导致问题的字符前添加'\u200e':

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

结果将是:
 :המר על תוצאת המשחק

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接