TextView字段中换行后的文本居中显示

4

我一直在研究这个问题,但所有的建议似乎都不起作用。我是 Android 应用程序的新手,虽然答案对于一些人来说可能很简单,但我就是看不出错在哪里......

我有一个 TextView 字段,其中包含一个带有换行符 (\n) 的字符串值。在图形输出中,下方的文本行未居中到 TextView 容器。我的代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView5"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="15dp"
        android:text="@string/maxText"
        android:textAlignment="gravity"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textStyle="bold" />

</RelativeLayout>

我的字符串如下:
<string name="maxText">My text part 1:\nMy text part 2</string>

输出文本的下划线左对齐于容器,但我需要它居中。我尝试了所有在论坛等地方找到的建议,但都没有成功。希望能得到帮助。
4个回答

2

实际上我们不需要将这段文本放在两个TextView中。

可以在XML文件中设置包含TextView的布局的android:layout_gravity="center"

如果这样做不起作用,

可以尝试为布局参数设置重心居中,并将此参数动态地设置到布局中。如下所示。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
yourLayout.setLayoutParams(params);
yourLayout.setGravity(Gravity.CENTER);

这对我很有效。

希望这对你也能够顺利运作。:)


1
唯一明智的解决方法是创建两个文本视图,第二个视图紧接在第一个下方,并设置为android:layout_gravity="center"android:gravity="center"

谢谢,Neoh。我也有这个想法。只是觉得在某个地方添加一小段代码会更好,而不是再添加一个TextView容器... - Titch2K6

0

你可以在你的类中尝试这段代码,我用它来处理按钮,效果很好,两行都居中。我猜对于一个 TextView 来说应该也是一样的:

String styledText = "My text part 1" + "<br />" + "My text part 2";         
textView.setText(Html.fromHtml(styledText));

注意:您需要分别声明这两个字符串并从资源中获取它们。


1
对我没用。甚至尝试使用<center>标签。对我有用的是每次通过代码更新TextView时设置text.setGravity(Gravity.CENTER)。 - Yaroslav Mytkalyk

0
在 XML 中最好的方法是添加属性。
android:gravity="center_horizontal" 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接