2015-04-02 8 views
1

У меня есть приложение для Android, которое может читать RSS-каналы. Я получил RTL в своем манифесте. Когда я показываю RSS-канал, который находится на иврите/арабском языке с RTL, происходит что-то замечательное.RTL работает только с несколькими линиями

image
Изображение показывает, как текст в текстовом виде (в списке) правильно выравнивает длинный текст, который занимает 2+ строки, справа. Тем не менее, 1 текст строки неправильно выровнен. Весь текст анализируется и устанавливается в текстовое окно таким же образом.

Это мой стиль TextView:

<item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:lineSpacingExtra">1dp</item> 
    <item name="android:paddingLeft">5dp</item> 
    <item name="android:paddingTop">2dp</item> 
    <item name="android:maxLines">2</item> 
    <item name="android:ellipsize">end</item> 
    <item name="android:textColor">@color/dark_gray</item> 
    <item name="android:fontFamily">sans-serif-light</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> 

Что вызывает эту разницу? И как я могу убедиться, что все (иврит/арабский) текст выровнен правильно.

+0

Попробуйте paddingStart вместо paddingLeft. Только то, что среди вышеприведенных атрибутов в определенном стиле, похоже, влияет на режим RTL. –

+0

@gauravjain Пробовал, но, похоже, не влияет на направление – Mdlc

+0

Можете ли вы включить свой макет? – ianhanniballake

ответ

1

Когда вы используете layout_width из wrap_content, ширина вашего вида регулируется в зависимости от того, сколько контента существует. В случае коротких строк это означает, что правый край вашего изображения находится прямо на краю текста, а не привязан к правому краю вашего FrameLayout. Это приводит к тому, что правый выравниваемый текст будет отображаться влево.

Вместо этого, вы должны зафиксировать оба край TextView - вы уже обрабатывать левый край с помощью android:layout_toRightOf - добавить android:layout_alignParentRight="true", а так, чтобы правый край зрения всегда будет соответствовать самому правому краю FrameLayout.

+0

Вы совершенно правы. Должно было использовать «рамки отображения макета», это спасло бы меня несколько часов моего времени. – Mdlc

1

Пожалуйста, ознакомьтесь с официальной ссылкой на блог разработчика Android: http://android-developers.blogspot.in/2013/03/native-rtl-support-in-android-42.html. Это должно помочь вам справиться с RTL. Также для текстового просмотра, если вам нужно, чтобы текст начинался с определенного направления (слева или справа для разных режимов), вы можете использовать свойство textAlignment и установить его в viewStart. Надеюсь это поможет.

+0

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

Смежные вопросы