Выравнивание текста справа в Android TextView
у меня есть TextView
в моем приложении. Я хочу выровнять текст справа. Я попытался добавить:
android:gravity="right"
но это не работает для меня.
что я могу делать неправильно?
18 ответов
Я думаю, что вы делаете это: android:layout_width = "wrap_content"
Если это так, сделайте следующее: android:layout_width = "match_parent"
В общем, android:gravity="right"
отличается от android:layout_gravity="right"
.
первый влияет на положение самого текста в представлении, поэтому, если вы хотите, чтобы он был выровнен по правому краю, то layout_width=
должно быть "fill_parent"
или "match_parent"
.
второй влияет на положение представления внутри его родителя, другими словами-выравнивание самого объекта (поле редактирования или текстовое представление) внутри родительского представления.
лучшим решением является тот, который является самым простым, и тот, который делает меньше изменений в вашем поведении кода.
что делать, если вы можете решить эту проблему только с 2 свойства TextView
?
вместо того, чтобы изменить свой LinearLayout
свойства, которые, возможно, могут изменить поведение LinearLayout
Чайлдс?
используя этот путь, вам не нужно изменить LinearLayout
свойства и поведение, нужно только добавить два следующих свойства для вашей цели TextView
:
android:gravity="right"
android:textAlignment="gravity"
что было бы лучше изменить только вашу цель, чтобы решить ваше решение, вместо того, чтобы иметь шанс вызвать другую проблему в будущем, изменяя ваш целевой отец? подумайте об этом :)
android:layout_gravity
используется для выравнивания текстового представления относительно родительского макета.
android:gravity
используется для выравнивания текста внутри текстового представления.
вы уверены, что пытаетесь выровнять текст внутри текстового представления справа или хотите переместить само текстовое представление вправо по отношению к родительскому макету или пытаетесь достичь обоих
убедитесь, что вы не используете android:layout_width="wrap_content"
Если это так, то он не сможет установить гравитацию, потому что у вас недостаточно места для выравнивания текста. Вместо этого используйте android:layout_width="fill_parent"
android:gravity="right"
он в основном используется в линейном макете, поэтому вам нужно установить ширину TextView или EditText как
android:layout_width = "match_parent"
и
когда вы работаете в относительном макете, используйте
android:layout_alignParentRight="true"
сделайте (LinearLayout)android:layout_width="match_parent"
и TextView android:layout_gravity="right"
если это RelativeLayout
можно использовать android:layout_toRightOf="@id/<id_of_desired_item>"
или
если вы хотите выровнять по right
угол устройства место android:layout_alignParentRight="true"
позвольте мне объяснить концепцию гравитации, используя WEB потому что многие разработчики знают об этом.
android_layout_gravity
поведение float:left|right|top|bottom
, тогда как android_gravity
работы как text_align:centre|left|right
в Android float является android_layout_gravity и text_align: является android_gravity.
и android_layout_gravity применяется относительно родителя. где как android_gravity применяется к своему ребенку или внутреннему содержание.
Примечание android_gravity работает только тогда, когда его вид match_parent(когда у него есть пространство для центра).
ниже работает для меня:
<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.
Я также столкнулся с той же проблемой и понял, что проблема происходит, поскольку layout_width TextView имеет wrap_content. Вам нужно иметь layout_width как match_parent и android: gravity = "гравитация"
<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>
делает номер один выравнивания в центре горизонтальной и вертикальной.
в моем случае, я использую Relative Layout
на emptyString
после борьбы на этом в течение часа. Только это сработало для меня:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
или layout_toEndOf
оба работают, но для поддержки его лучше, я использовал оба.
чтобы сделать его более ясным:
вот что я пытался сделать:
и это был эмулятор вывод
планировка:
<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" />
обратите внимание, что:
-
android:layout_width="wrap_content"
работает -
Gravity
не используется