Выравнивание текста по правому краю в 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"
если это
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 = "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
не используется