TextView гравитация не работает с ивритом - PullRequest
11 голосов
/ 05 апреля 2011

У меня есть TextView на иврите, и я хочу, чтобы он был справа, поэтому я делаю

<TextView....
    android:gravity="right"
</TextView>

На некоторых телефонах он будет выровнен по правому краю, а на некоторых - по левому.,Я думаю, что это зависит от конфигурации телефона.Как я могу это исправить ??

Спасибо.

Ответы [ 7 ]

3 голосов
/ 27 июня 2011

Это может быть проблемой.Если ее нет на странице проблемы Android , рассмотрите возможность сообщения об этом.

Пока вы можете попробовать исправить ее, поместив TextView внутри ViewGroup.Используйте wrap_content и layout_gravity, чтобы правильно разместить его внутри родителя.

1 голос
/ 11 декабря 2011

Android: Gravity может работать неправильно, если для android:layout_height или android:layout_weight установлено значение wrap_content.

1 голос
/ 01 июля 2011

Android в настоящее время не поддерживает текст BiDi.Некоторые производители взломали его, но до тех пор, пока это не станет стандартной частью платформы, можно ожидать, что любое использование текста BiDi приведет к непоследовательному, нарушенному поведению.К сожалению.

0 голосов
/ 27 марта 2014

Это происходит потому, что старые версии Android не слишком хорошо поддерживают RTL. Для меня то, что в конечном итоге сработало, было веб-просмотром. Потому что тогда я просто использовал CSS для оформления своего текста. Вам также понадобится onTouchListener, если вы хотите, чтобы он что-то делал при нажатии

измените ваш TextView на Webview:

<WebView
        android:id="@+id/noticetit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

Мой код:

WebView webView = (WebView) findViewById(R.id.noticetit);
private void setWebView() {
            String htmlcss = "<html lang=\"he\"><head><meta charset=\"utf-8\" />"
                    + "<style type=\"text/css\">.rtl {direction: rtl;color:black;font:20px arial;}</style></head>"
                    + "<body class=\"rtl\"><div class=\"rtl\">" + webView
                    + "</div></body></html>";

            webView.loadDataWithBaseURL(null, htmlcss, "text/html", "utf-8", null);
            webView.setOnTouchListener(new OnTouchListener() {
                // Removed @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (v.getId() == R.id.maintitle
                            && event.getAction() == MotionEvent.ACTION_DOWN) {
                        //Put your code here
                    }
                    return false;
                }
            });
        }

Надеюсь, это поможет вам!

0 голосов
/ 17 августа 2012

если вы хотите, чтобы текст был выровнен вправо, попробуйте использовать это:

textView.setText("\u200F"+content);
0 голосов
/ 02 июля 2011

Я нашел решение.Если ваш текст написан на иврите, вам не нужно устанавливать гравитацию, потому что без него он будет выровнен.Я пришел к этому, когда увидел латинские символы в моих взглядах, которые были справа.Хотя в редакторе макетов SDK все еще есть ошибка.

Протестировано на LG GT540 и Samsung Galaxy S

0 голосов
/ 05 апреля 2011

Я думаю, это то, что вы ищете:

android:layout_gravity="right"
...