I have a TextView
in my application. I want to align the text in it to the right. I tried adding:
android:gravity="right"
But this doesn't work for me.
What might I be doing wrong?
I have a TextView
in my application. I want to align the text in it to the right. I tried adding:
android:gravity="right"
But this doesn't work for me.
What might I be doing wrong?
I think that you are doing this: android:layout_width = "wrap_content"
If this is the case, do this: android:layout_width = "match_parent"
In general, android:gravity="right"
is different from android:layout_gravity="right"
.
The first one affects the position of the text itself within the View, so if you want it to be right-aligned, then layout_width=
should be either "fill_parent"
or "match_parent"
.
The second one affects the View's position inside its parent, in other words - aligning the object itself (edit box or text view) inside the parent view.
The better solution is the one that is the most simple, and the one that does less modification in your code behaviour.
What if you can solve this problem only with 2 Properties on your TextView
?
Instead of needing to change your LinearLayout
Properties that maybe can alter the behaviour of LinearLayout
childs?
Using this way, you do not need to change LinearLayout
properties and behaviour, you only need to add the two following properties to your target TextView
:
android:gravity="right"
android:textAlignment="gravity"
What would be better to change only your target to solve your solution instead of having a chance to cause another problem in the future, modifying your target father? think about it :)
TextView
properties? - You can check the property from the reference here: developer.android.com/reference/android/view/… –
Hausmann In case somebody still needs
android:gravity="end"
android:layout_gravity
is used to align the text view with respect to the parent layout.
android:gravity
is used to align the text inside the text view.
Are you sure you are trying to align the text inside the text view to the right or do you want to move the text view itself to the right with respect to the parent layout or are you trying to acheive both
The following code snippet:
android:textAlignment="textEnd"
android:layout_gravity="end"
works great for me
android:gravity="right"
It is basically used in Linear Layout so you have to set your width of TextView or either EditText as
android:layout_width = "match_parent"
and
When you are working in Relative Layout, use
android:layout_alignParentRight="true"
Make sure that you are not using android:layout_width="wrap_content"
if so then it won't be able to set the gravity because you are not having enough space for the text to align. Instead use android:layout_width="fill_parent"
If it is in RelativeLayout
you can use android:layout_toRightOf="@id/<id_of_desired_item>"
Or
If you want to align to the right
corner of the device the place android:layout_alignParentRight="true"
Make the (LinearLayout) android:layout_width="match_parent"
and the TextView's android:layout_gravity="right"
Below works for me:
<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" />
Please note the android:layout_alignParentEnd
and android:textAlignment
settings of the second TextView.
Let me explain gravity concept using WEB because a lot of developer are aware of it.
android_layout_gravity
behaves float:left|right|top|bottom
Whereas android_gravity
work as text_align:centre|left|right
In Android float is android_layout_gravity and text_align: is android_gravity.
And android_layout_gravity applies relative to parent. where as android_gravity applies to its child or inner content.
Note android_gravity only works when its View is match_parent(when it have space to center).
You can use:
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
this should serve the purpose
android:textAlignment="textStart"
In my case, I was using Relative Layout
for a emptyString
After struggling on this for an hour. Only this worked for me:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
or layout_toEndOf
both works, but to support it better, I used both.
To make it more clear:
This was what I was trying to do:
And this was the emulator's output
Layout:
<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" />
Notice that:
android:layout_width="wrap_content"
worksGravity
is not usedI also faced the same problem and figured the problem was happening as the layout_width of the TextView was having wrap_content. You need to have layout_width as match_parent and the 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>
makes number one align in center both horizontal and vertical.
Try using :-
android:justificationMode="inter_word"
this will justify your text.
I have used the attribute "layout_alignRight" in my case, in text its :
android:layout_alignRight="@+id/myComponentId"
If you want to add some right margin, just set the attribute "Layout_Margin Right" to "20dp" for exemple, in text its :
android:layout_marginRight="20dp"
Justification Alignment has been supported for TextView from Android API 26+
<TextView ...
... android:justificationMode="inter_word" />
By default, value is none.
© 2022 - 2024 — McMap. All rights reserved.