Выровнять текст по правому краю в Android TextView - PullRequest
204 голосов
/ 23 января 2012

У меня есть TextView в моем приложении. Я хочу выровнять текст справа. Я попытался добавить:

android:gravity="right"

Но это не работает для меня.

Что я могу делать не так?

Ответы [ 19 ]

182 голосов
/ 23 января 2012

Я думаю, что вы делаете это: android:layout_width = "wrap_content"
Если это так, сделайте следующее: android:layout_width = "match_parent"

147 голосов
/ 29 января 2012

В общем, android:gravity="right" отличается от android:layout_gravity="right".

Первый влияет на положение самого текста в представлении, поэтому, если вы хотите, чтобы он был выровнен по правому краю, тогда layout_width= должно быть либо "fill_parent", либо "match_parent".

Второй влияет на положение View внутри его родителя, другими словами - выравнивание самого объекта (поле редактирования или текстовое представление) внутри родительского представления.

77 голосов
/ 20 ноября 2013

Лучшее решение - это то, которое является самым простым, и которое делает меньше изменений в поведении вашего кода .

Что если вы можете решить эту проблему только с 2 Свойствамина вашем TextView?

Вместо того, чтобы менять LinearLayout свойства, которые могут изменить поведение LinearLayout childs?

Используя этот способ, вам не нужно менятьLinearLayout свойства и поведение, вам нужно всего лишь добавить два следующих свойства к вашей цели TextView:

android:gravity="right"
android:textAlignment="gravity"

Что было бы лучше изменить только вашу цель, чтобы решить ваше решение, чем иметь шансвызвать еще одну проблему в будущем, изменяя вашего целевого отца?подумай:)

20 голосов
/ 23 января 2012

android:layout_gravity используется для выравнивания текстового представления относительно родительского макета.android:gravity используется для выравнивания текста внутри текстового представления.

Вы уверены, что пытаетесь выровнять текст внутри текстового представления вправо или хотите переместить само текстовое представление вправо?относительно родительского макета или вы пытаетесь достичь обоих

10 голосов
/ 22 июня 2017

Следующий фрагмент кода:

android:textAlignment="textEnd"
android:layout_gravity="end"

отлично работает для меня

8 голосов
/ 16 сентября 2017

На случай, если кому-то еще нужно

android:gravity="end"
8 голосов
/ 23 января 2012

Убедитесь, что вы не используете android:layout_width="wrap_content", если это так, тогда он не сможет установить гравитацию, потому что у вас недостаточно места для выравнивания текста. Вместо этого используйте android:layout_width="fill_parent"

7 голосов
/ 27 декабря 2016
android:gravity="right"

Он в основном используется в линейном макете, поэтому вы должны установить ширину TextView или EditText как

android:layout_width = "match_parent"

и

Когда вы работаете в Relative Layout, используйте

android:layout_alignParentRight="true"
5 голосов
/ 18 августа 2013

Сделать (LinearLayout) android:layout_width="match_parent" и TextView's android:layout_gravity="right"

5 голосов
/ 13 мая 2013

Если он находится в RelativeLayout, вы можете использовать android:layout_toRightOf="@id/<id_of_desired_item>"

или

Если вы хотите выровнять угол устройства right,место android:layout_alignParentRight="true"

...