【发布时间】:2012-02-16 15:42:10
【问题描述】:
我的应用程序中有一个TextView。我想将其中的文本向右对齐。我尝试添加:
android:gravity="right"
但这对我不起作用。
我可能做错了什么?
【问题讨论】:
标签: android alignment textview
我的应用程序中有一个TextView。我想将其中的文本向右对齐。我尝试添加:
android:gravity="right"
但这对我不起作用。
我可能做错了什么?
【问题讨论】:
标签: android alignment textview
我认为您正在这样做:android:layout_width = "wrap_content"
如果是这种情况,请执行以下操作:android:layout_width = "match_parent"
【讨论】:
一般来说,android:gravity="right" 与 android:layout_gravity="right" 不同。
第一个影响文本本身在视图中的位置,因此如果您希望它右对齐,那么layout_width= 应该是"fill_parent" 或"match_parent"。
第二个影响视图在其父视图内的位置,换句话说 - 在父视图内对齐对象本身(编辑框或文本视图)。
【讨论】:
更好的解决方案是最简单的解决方案,并且对代码行为的修改更少。
如果您仅使用 TextView 上的 2 个属性就可以解决此问题怎么办?
而不是需要更改您的 LinearLayout 属性,这可能会改变 LinearLayout 孩子的行为?
使用这种方式,您不需要更改LinearLayout 的属性和行为,您只需将以下两个属性添加到您的目标TextView:
android:gravity="right"
android:textAlignment="gravity"
有什么比只改变你的目标来解决你的解决方案而不是有机会在未来引起另一个问题,修改你的目标父亲更好?想一想:)
【讨论】:
TextView 属性? - 您可以从这里的参考中查看属性:developer.android.com/reference/android/view/…
android:layout_gravity 用于将文本视图相对于父布局对齐。
android:gravity 用于对齐文本视图内的文本。
您确定要尝试将文本视图中的文本向右对齐,还是要将文本视图本身相对于父布局向右移动,或者您是否要同时实现两者
【讨论】:
如果有人仍然需要
android:gravity="end"
【讨论】:
以下代码sn-p:
android:textAlignment="textEnd"
android:layout_gravity="end"
非常适合我
【讨论】:
确保您没有使用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" 和 TextView 的 android:layout_gravity="right"
【讨论】:
如果在RelativeLayout,你可以使用android:layout_toRightOf="@id/<id_of_desired_item>"
或者
如果您想与设备的right 角对齐,则放置android:layout_alignParentRight="true"
【讨论】:
以下对我有用:
<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_alignParentEnd和android:textAlignment设置。
【讨论】:
让我用 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 时有效(当它有空间居中时)。
【讨论】:
你可以使用:
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
【讨论】:
这应该达到目的
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 未使用【讨论】:
我也遇到了同样的问题,并认为问题正在发生,因为 TextView 的 layout_width 有 wrap_content。你需要 layout_width 作为 match_parent 和 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>
使第一个在水平和垂直中心对齐。
【讨论】:
尝试将android:gravity="center" 添加到TextView
【讨论】:
在我的例子中,我使用了属性“layout_alignRight”,在文本中:
android:layout_alignRight="@+id/myComponentId"
如果您想添加一些右边距,只需将属性“Layout_Margin Right”设置为“20dp”,例如,在文本中:
android:layout_marginRight="20dp"
【讨论】:
Android API 26+ 中的 TextView 支持对齐方式
<TextView ...
... android:justificationMode="inter_word" />
默认值为无。
【讨论】: