在android TextView中右对齐文本


215

TextView我的申请中有一个。我想将文本右对齐。我尝试添加:

android:gravity="right"

但这对我不起作用。

我可能做错了什么?

Answers:


193

我认为您正在执行此操作:android:layout_width = "wrap_content"
如果是这种情况,请执行以下操作:android:layout_width = "match_parent"


2
@Bishan填充将填充其余空间,匹配将其设置为等于父对象的宽度
Troy Cosentino

11
实际上,fill_parent和match_parent是同一件事。名称被更改为match_parent,因为显然fill_parent使人们感到困惑。
爱德华·福尔克

158

一般来说,android:gravity="right"与有所不同android:layout_gravity="right"

第一个会影响文本本身在视图中的位置,因此如果您希望文本右对齐,layout_width=则应为"fill_parent""match_parent"

第二个影响视图在其父视图内的位置,换句话说,就是在父视图内对齐对象本身(编辑框或文本视图)。


83

更好的解决方案是最简单的解决方案,并且是对代码行为进行较少修改的解决方案

如果仅在您的2个属性上可以解决此问题TextView怎么办?

无需更改LinearLayout可能会改变LinearLayout孩子行为的“属性” ?

使用这种方法,您无需更改LinearLayout属性和行为,只需将以下两个属性添加到目标中TextView

android:gravity="right"
android:textAlignment="gravity"

最好只更改目标以解决您的解决方案,而不是将来有机会引起另一个问题来修改目标父亲,这会更好吗?考虑一下:)


我收到一条错误消息,说在包android中找不到资源'textAlignment'的资源标识符。
2014年

您确定要访问TextView属性吗?-您可以检查从参考这里的物业developer.android.com/reference/android/view/...
保罗罗伯特·罗萨

4
在API级别17(Android 4.2)中添加了textAlignment。您的仿真器/设备将需要运行4.2+,才能正常运行。
thanhtd 2014年

我尝试在Android 4.1.2中使用此textAlignment属性,并收到错误“找不到属性'textAlignment'的资源标识符”。我在这里stackoverflow.com/a/20176191/723507找到了这个错误的答案。您如何在4.0.3中使用它?
thanhtd 2014年

20

android:layout_gravity用于使文本视图相对于父版式对齐。 android:gravity用于在文本视图内对齐文本。

您确定要在文本视图中将文本视图向右对齐,还是要相对于父版式将文本视图本身向右移,还是要同时实现这两者?


我试图将文本视图内的文本向右对齐
Bishan 2012年

11

以下代码段:

android:textAlignment="textEnd"
android:layout_gravity="end"

对我来说很棒


11

万一还是有人需要

android:gravity="end"

那个有什么用途?
gumuruh

在LTR中,这会将文本右对齐,在RTL中将文本左对齐
npk

8

android:layout_width="wrap_content"如果不使用,请确保不使用它,否则它将无法设置重力,因为您没有足够的空间来对齐文本。改为使用android:layout_width="fill_parent"


7
android:gravity="right"

它基本上是在线性布局中使用的,因此您必须设置TextView的宽度或将EditText设置为

android:layout_width = "match_parent"

在“相对布局”中使用时,请使用

android:layout_alignParentRight="true"


5

如果它在RelativeLayout你可以使用android:layout_toRightOf="@id/<id_of_desired_item>"

要么

如果要对准right设备的角落android:layout_alignParentRight="true"


4

让我用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相对于parent适用。android_gravity适用于其子内容或内部内容。

注意 android_gravity仅在其View为match_parent时才有效(当它有居中的空间时)。


3

下面为我​​工作:

<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" />

请注意第二个TextView 的android:layout_alignParentEndandroid:textAlignment设置。


2

您可以使用:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"


2

就我而言,我是用Relative LayoutemptyString

经过一个小时的努力。只有这对我有用:

android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"

layout_toRightOflayout_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" />

注意:

  1. android:layout_width="wrap_content" 作品
  2. Gravity 未使用

1

我也遇到了同样的问题,并认为问题是由于TextView的layout_width具有wrap_content而发生的。您需要将layout_width作为match_parent和android:gravity =“ gravity”


1
<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>

使数字在水平和垂直中心对齐。



0

在我的案例中,我使用了属性“ layout_alignRight”,其文本为:

android:layout_alignRight="@+id/myComponentId"

如果要添加一些右边距,只需将属性“ Layout_Margin Right”设置为“ 20dp”,其文本为:

android:layout_marginRight="20dp"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.