Ответы:
Я думаю, что вы делаете это: android:layout_width = "wrap_content"
если это так, сделайте это:android:layout_width = "match_parent"
В общем, android:gravity="right"
отличается от android:layout_gravity="right"
.
Первый влияет на положение самого текста в представлении, поэтому, если вы хотите, чтобы он был выровнен по правому краю, то layout_width=
должно быть либо "fill_parent"
или "match_parent"
.
Второй влияет на положение View внутри его родителя, другими словами - выравнивание самого объекта (поле редактирования или текстовое представление) внутри родительского представления.
Лучшее решение - это то, которое является самым простым, и которое делает меньше изменений в поведении вашего кода .
Что делать, если вы можете решить эту проблему только с 2 свойствами на вашем TextView
?
Вместо того, чтобы менять свои LinearLayout
свойства, которые могут изменить поведение LinearLayout
детей?
Используя этот способ, вам не нужно изменять LinearLayout
свойства и поведение, вам нужно только добавить два следующих свойства к вашей цели TextView
:
android:gravity="right"
android:textAlignment="gravity"
Что может быть лучше, если вы измените только свою цель, чтобы решить ваше решение, вместо того, чтобы иметь шанс вызвать другую проблему в будущем, изменяя вашего целевого отца? подумай об этом :)
TextView
недвижимости? - Вы можете проверить свойство по ссылке здесь: developer.android.com/reference/android/view/…
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"
и
Когда вы работаете в Relative Layout, используйте
android:layout_alignParentRight="true"
Сделайте (LinearLayout) android:layout_width="match_parent"
и TextViewandroid: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 работает только тогда, когда его View равен 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.
это должно служить цели
android:textAlignment="textStart"
В моем случае я использовал 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
не используется<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>
выравнивание по центру по горизонтали и вертикали.
попробуйте добавить android:gravity="center"
вTextView
Я использовал атрибут "layout_alignRight" в моем случае, в тексте его:
android:layout_alignRight="@+id/myComponentId"
Если вы хотите добавить немного правого поля, просто установите атрибут «Layout_Margin Right» на «20dp» для примера, в тексте его:
android:layout_marginRight="20dp"