我有一个TextView在我的应用程序。我想让文本向右对齐。我试着补充道:
TextView
android:gravity="right"
但这对我没用。
我可能做错了什么?
确保你没有使用android:layout_width="wrap_content",如果是这样,那么它将无法设置重力,因为你没有足够的空间来对齐文本。相反,请使用android:layout_width="fill_parent"
android:layout_width="wrap_content"
android:layout_width="fill_parent"
我认为你正在这样做:android:layout_width = "wrap_content" 如果是这样,执行:android:layout_width = "match_parent"
android:layout_width = "wrap_content"
android:layout_width = "match_parent"
android:layout_gravity用于将文本视图与父布局对齐。 android:gravity用于在文本视图中对齐文本
android:layout_gravity
android:gravity
你确定你是在试图将文本视图中的文本向右对齐还是你想要将文本视图本身相对于父布局向右移动,还是你想同时实现这两种目的
一般来说,android:gravity="right"不同于android:layout_gravity="right"。
android:layout_gravity="right"
第一个变量影响文本本身在视图中的位置,所以如果你想让它右对齐,那么layout_width=应该是"fill_parent"或"match_parent"。
layout_width=
"fill_parent"
"match_parent"
第二个影响视图在其父视图中的位置,换句话说——在父视图中对齐对象本身(编辑框或文本视图)。
如果它在RelativeLayout中,你可以使用android:layout_toRightOf="@id/<id_of_desired_item>"
RelativeLayout
android:layout_toRightOf="@id/<id_of_desired_item>"
或
如果你想对齐到设备的right角的地方android:layout_alignParentRight="true"
right
android:layout_alignParentRight="true"
使(LinearLayout) android:layout_width="match_parent"和TextView的android:layout_gravity="right"
android:layout_width="match_parent"
更好的解决方案是最简单的解决方案,并且对代码行为的修改较少。
如果你只能用TextView上的2个属性来解决这个问题呢?
而不是需要改变你的LinearLayout属性,也许可以改变LinearLayout子的行为?
LinearLayout
android:gravity="right" android:textAlignment="gravity"
如果只改变你的目标来解决你的问题,而不是有机会在未来引起另一个问题,修改你的目标父亲,会更好吗?想想吧。
尝试将android:gravity="center"添加到TextView中
android:gravity="center"
以下是我的工作:
<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设置。
android:layout_alignParentEnd
android:textAlignment
让我用网络来解释重力概念,因为很多开发人员都知道它。
android_layout_gravity表现为float:left|right|top|bottom
android_layout_gravity
float:left|right|top|bottom
而android_gravity工作于text_align:centre|left|right
android_gravity
text_align:centre|left|right
在Android中float是android_layout_gravity, text_align:是android_gravity。
android_layout_gravity相对于parent应用。如android_gravity应用于它的子内容或内部内容。
请注意 android_gravity仅当它的视图为match_parent时(当它有空间居中时)才有效。
我也面临同样的问题,并认为问题正在发生,因为TextView的layout_width是有wrap_content。你需要有layout_width为match_parent和android:gravity = "gravity"
它基本上用于线性布局,所以你必须设置你的宽度的TextView或编辑文本为
而且
当你在相对布局中工作时,使用
你可以使用:
android:layout_alignParentRight="true" android:layout_centerVertical="true"
这应该可以达到目的
android:textAlignment="textStart"
以下代码片段:
android:textAlignment="textEnd" android:layout_gravity="end"
对我来说很好
<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="end"
在我的例子中,我使用Relative Layout来实现emptyString
Relative Layout
emptyString
在纠结了一个小时之后。只有这个对我有用:
android:layout_toRightOf="@id/welcome" android:layout_toEndOf="@id/welcome" android:layout_alignBaseline="@id/welcome"
layout_toRightOf或layout_toEndOf都可以,但为了更好地支持它,我两者都用了。
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" />
注意:
Gravity
在我的例子中,我使用了属性“layout_alignRight”,在文本中:
android:layout_alignRight="@+id/myComponentId"
如果你想添加一些右边框,只需要设置属性“Layout_Margin right”为“20dp”,例如:
android:layout_marginRight="20dp"
校正对齐已从Android API 26+支持TextView
<TextView ... ... android:justificationMode="inter_word" />
缺省情况下,value为none。
Android TextView Docs
Question on Android TextView Justify Text .
试着使用:-
android:justificationMode="inter_word"
这将证明你的短信是正确的。