How to prevent automatic right-to-left text direct

2020-02-28 04:41发布

问题:

In a TextView, when a text starts with a Hebrew letter, the entire text is shown in RTL mode.

The problem is that in my case only the first word is in Hebrew, while the entire sentence is in English, so instead of

 דני went to school

the user sees

                                                  went to school דני

(the first word is in the end of the sentence, when reading in English)

How can I prevent this from happening and force the text to start from the left?

回答1:

Unicode characters are intrisectly LTR or RTL. In most situations, the whole text takes its orientation from the first character. Hebrew character are RTL.

See http://en.wikipedia.org/wiki/Bi-directional_text

Your text starts with a RTL character, and is therefore considered RTL. You can force it to be seen as LTR by using the left-to-right mark, "\u200E".

Starting your text with this special character will tell the layout system the explicit orientation of the whole text. RTL sections will still be considered as such, though, because the characters are explicitly RTL.

Numbers, for example, are not a strong indicator, and therefore don't affect the direction of the section they are placed in. Therefore, numbers between section of different direction can be a problem, and may need explicit indication.