2011-06-28 8 views
12

Poniższy zrzut ekranu przedstawia mój problem.Problem wyrównania tekstu podczas korzystania z czcionki arabskiej

Pierwszy znak EditText pokazuje podpowiedź w języku arabskim, która jest przesunięta w górę, teraz drugi numer EditText służy wyłącznie jako odniesienie, co pokazuje, że wersja angielska jest całkowicie w porządku. To samo dotyczy modelu Button.

I zadeklarowały ciąg w strings.xml tak:

<string name="ar_login">دخول</string> 

screenshot of the problem

ten sposób ustawić EditText za podpowiedź:

UserName.setTypeface(ArabicFont); 
String hint = getString(R.string.ar_HintUserName); 
.... 
UserName.setHint(hint); 

UPDATE: użyłem tego , ale bezużyteczne:

UserName.setGravity(Gravity.CENTER_VERTICAL); 

Ale z tym tekstem przesunął się nieco w dół; ale sądzę, że to nie jest ogólna:

UserName.setPadding(0,15,0,0); 

Z Padding, English słowa przesunąć do dołu.

UPDATE 2: Pierwotnie teksty arabskie są rozdzielone; oznacza, że ​​są pokazywane litera po literze. Więc, aby do nich dołączyć, użyłem tego Arabic Reshaper. Do pobrania kod, zaznacz to link

Teraz kiedy zmienią arabskiego tekstu, a następnie ustawić na TextView lub EditText's podpowiedź, ale to przesunięte upwords ale bez zmiany kształtu jest w porządku.

Sądzę więc, że muszę zmienić klasę przekształcania LUB zrobić mój tekst, aby nie rozdzielać słowa. Ale nie wiesz gdzie się udać?

+0

To wygląda na problem z Androidem. Czy próbowałeś grać z atrybutem 'gravity'? – Macarse

+0

Myślę, że jest to zależny od języka (arabski, angielski) problem. użyj padding_top, aby nim zarządzać. –

+0

Z padding_Top, mam dwa problemy: najpierw nie będzie generyczny, drugi muszę zmienić padding z powrotem na oryginalny dla angielskiego. – Farhan

Odpowiedz

3

nadal jestem w stanie dowiedzieć się, dlaczego Android dzieli arabskiego słowa w oddzielnych liter w każdym razie w mojej drugiej edycji przytaczam link, który używa klasy, aby ponownie dołączyć do oddzielnych liter i ponownie utworzyć słowo.

W funkcji reshape na końcu błędnie dodano \n, a usunięcie go rozwiązuje problem.

+0

jak mogę go usunąć? –

+0

Nie znasz mocy "Backspace"?: P – Farhan

0

tylko domyślać :) ...

  1. Co jeśli rozmiar czcionki arabskiej jest niższa? [Jeśli jest to przypadek, to Gravity.CENTER_VERTICAL powinny pracowały dla ciebie :(]

  2. Może to jest styl tego pliku czcionki. Jak o próbie inny plik czcionki dla tekstu arabskiego?

+0

Doceniam, ale nie działa. 1. Rozmiar czcionki nie jest problemem, ale wciąż sprawdzałem z grawitacją; ten sam wynik. 2. Sprawdzono za pomocą innego pliku czcionki; ten sam wynik .. :( – Farhan

1

jestem pewien jego problem z pliku czcionki, które używasz.!

[Przepraszam, że nie wolno mi przesłać zrzut ekranu jak moi reputacja są niższe :(]

dla układu, ja ustawiałem tekst w xml i krój pisma w kodzie, a ja nie jestem ustawiony g dowolne atrybuty, takie jak wypełnienie/grawitacja. Ale działało to dobrze dla mnie.

Zapewniam, że użycie pliku czcionki, którego styl odpowiada wymaganiom, rozwiąże problem.

Wystarczy, aby pomóc z, ale nie jestem pewien, mam plik czcionki z DroidSansFallback.ttf

+0

Z załączonym plikiem wyniki są takie same.Możesz wysłać mi plik, którego używasz, na mój adres e-mail w moim profilu? Naprawdę nie jest w stanie go rozwiązać.Próbowałem z innym plikiem czcionki, ale ten sam wynik. – Farhan

Powiązane problemy