Відповіді:
Я думаю, що ви це робите: 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"
Що було б краще змінити лише свою ціль, щоб вирішити своє рішення, а не мати можливість спричинити ще одну проблему в майбутньому, змінивши свого цільового батька? подумай над цим :)
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"
і
Коли ви працюєте у відносній макеті, використовуйте
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 працює лише тоді, коли його Перегляд є відповідним (коли у ньому є простір до центру).
Нижче працює для мене:
<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"