Jak obsługiwać języki RTL na wcześniejszych wersjach Androida?

tło

TextView zawsze miał problemy z językami RTL (od prawej do lewej). Ponieważ wiem tylko, jak czytać hebrajski (oprócz angielskiego), będę mówił o jego problemach:

Wyrównanie tekstu (i nie mówię o grawitacji). Jako język RTL hebrajski umieszcza słowa od prawej do lewej (w porównaniu z angielskim, który jest przeciwny).

Aby pokazać, jak denerwujące jest to, wyobraź sobie, że zamiast pokazywać „Hello world”. zazwyczaj dostajesz „.Hello world”. Można to łatwo naprawić, jeśli masz je w jednym zdaniu, ale trudniej, gdy jest wiele znaków interpunkcyjnych.

Miejsca samogłoski. Hebrajski nie wymaga samogłosek do czytania tekstu, ale czasami bardzo trudno jest je odczytać bez nich (zwłaszcza biblii). W przypadku samogłosek hebrajski ma tak zwane „NIKUD”, które w rzeczywistości przypominają kropki wewnątrz liter. Problem w Androidzie polegał na tym, że zazwyczaj znajdowały się w złym miejscu.

Aby pokazać, jak denerwujące jest to, wyobraź sobie, że zamiast pokazywać „Hello world”. zazwyczaj otrzymujesz „.eHlol owrld”. Nawet jeśli spróbujesz to naprawić (umieść samogłoski zawsze po jednym znaku po bieżącym), pozycja w literze nie była poprawna (wyobraź sobie, że „e” w „Hello” będzie jak powyżej „H”, bo przykład).

Tylko w wersji 4.2 (czytajtutaj, w „Native RTL support”), Google naprawiło wszystkie problemy związane z hebrajskim (lub przynajmniej tak się wydaje).

Problem

problemy z językiem hebrajskim spowodowały, że każdy izraelski przewoźnik i każdy niestandardowy ekspres do pamięci ROM ma własne rozwiązanie, jak rozwiązać różne problemy, co praktycznie uniemożliwia obsługę tekstu RTL na urządzeniach wcześniejszych niż 4.2.

Sprawy mogą stać się jeszcze bardziej frustrujące na wypadek, gdyby tekst zawierał zarówno litery hebrajskie, jak i angielskie.

Co próbowałem

Czytałem wiele stron internetowych mówiących o tych problemach, a ja wypróbowałem wiele wariantów rozwiązań, żaden nie rozwiązał problemu na wszystkich urządzeniach:

Niektórzy sugerują umieszczenie znaku „200F” (lub „u202D”) na końcu / początku / obu tekstów.

Niektórzy sugerują używanieHtml.fromHtml () metoda i umieścić tam coś specjalnego.

Niektórzy sugerują nawet korzystanie z WebView (i być może używająWebSettings.setDefaultTextEncodingName () ).

Pytanie

Czy istnieje konkretne rozwiązanie tego problemu?

Zakładam, że najlepsze jest to, że ponieważ Android 4.2 rozwiązuje ten problem, a Android jest open source, powinniśmy zaimportować jego TextView do biblioteki, z której możemy korzystać, ale Google nie dostarczył jeszcze takiej biblioteki.

questionAnswers(2)

yourAnswerToTheQuestion