Правый выравнивающий текст в android TextView

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

android:gravity="right"

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

Что я могу делать неправильно?

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

Что делать, если вы можете решить эту проблему только с помощью двух свойств на TextView?

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

android:gravity="right"

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

android:layout_width = "match_parent"

и

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

android:layout_alignParentRight="true"

Ответ 8

Если кому-то все еще нужно

android:gravity="end"

Ответ 9

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

Или

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

Ответ 10

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

Ответ 11

Позвольте мне объяснить концепцию гравитации, используя WEB, потому что многие разработчики знают об этом.

android_layout_gravity ведет себя float:left|right|top|bottom

В то время как android_gravity работает как text_align:centre|left|right

В Android-плагине есть android_layout_gravity и text_align: isroid_gravity.

И применяется android_layout_gravity относительно родителя. где asroid_gravity применяется к его дочернему или внутреннему контенту.

Примечание android_gravity работает только тогда, когда его представление соответствует match_parent (когда у него есть место для центра).

Ответ 12

Ниже работает для меня:

<TextView
    android:id="@+id/tv_username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sarah" />

<TextView
    android:id="@+id/tv_distance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tv_username"
    android:layout_alignParentEnd="true"
    android:layout_toEndOf="@+id/tv_username"
    android:text="San Marco"
    android:textAlignment="viewEnd" />

Обратите внимание на настройки android:layout_alignParentEnd и android:textAlignment второго TextView.

Ответ 13

Вы можете использовать:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"

Ответ 14

это должно служить цели

android:textAlignment="textStart"

Ответ 15

Я также столкнулся с той же проблемой и решил, что проблема происходит, поскольку layout_width в TextView имеет wrap_content. Вы должны иметь layout_width как match_parent и android: gravity = "gravity"

Ответ 16

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

  <TextView
    android:id="@+id/tct_postpone_hour"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_gravity="center"
    android:gravity="center_vertical|center_horizontal"
    android:text="1"
    android:textSize="24dp" />
</RelativeLayout>

делает первый номер в центре как горизонтальным, так и вертикальным.

Ответ 17

В моем случае я использовал Relative Layout для emptyString

После борьбы за это в течение часа. Только это сработало для меня:

android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"

layout_toRightOf или layout_toEndOf оба работают, но для лучшей поддержки я использовал оба.

Чтобы было понятнее:

Это было то, что я пытался сделать:

enter image description here

И это был выход эмулятора

enter image description here

Планировка:

<TextView
    android:id="@+id/welcome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:text="Welcome "
    android:textSize="16sp" />
<TextView
    android:id="@+id/username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/welcome"
    android:layout_toRightOf="@id/welcome"
    android:text="@string/emptyString"
    android:textSize="16sp" />

Заметить, что:

  1. android:layout_width="wrap_content" работает
  2. Gravity не используется

Ответ 18

попробуйте добавить android:gravity="center" в TextView

Ответ 19

Я использовал атрибут "layout_alignRight" в моем случае, в тексте его:

android:layout_alignRight="@+id/myComponentId"

Если вы хотите добавить немного правого поля, просто установите атрибут "Layout_Margin Right" на "20dp" для примера, в тексте его:

android:layout_marginRight="20dp"