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?
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.
As alternative you can use android:textDirection="locale"
, so for devices with LTR locales any string with RTL characters will be displayed properly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With