Ответы:
Я думаю, что вы делаете это: 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"