安卓多行文本框TextView

20

我想要一个TextView,它应该被分成4行。例如:

Vishal Vyas
  Having
   342
Reputation

注意,重力应该是center_horizontal

我尝试了以下代码:

<TextView
    android:gravity="center_horizontal"
    android:id="@+id/lblUserRep"
    android:layout_width="70dp"
    android:layout_height="wrap_content"
    android:lines="4"
    android:maxLines="4"
    android:text="VishalVyas Having 342 Reputation" >
</TextView>

这行代码有效,但输出以下内容:

VishalVyas
  Having
   342
Reputation

问题:

  1. 在Vishal和Vyas之间有空格时,它无法工作。
  2. android:layout_width="70dp"是硬编码的,并且可能会有任意数量字符的任何名称,而不仅仅是VishalVyas

请给出建议。

补充说明: 如果需要编写自定义TextView来实现此目的,则可以。但我需要一些指导。

先行致谢。


只是好奇...你的实际代码中Vishal Vyas之间确实有一个空格吗?(第1点提到空格未呈现,但我没有看到空格)? - DavidDraughn
@DavidDraughn 实际上我需要一个固定四行的文本视图,如果我在这个语句中在Vishal和Vyas之间加入空格,比如 android:text="Vishal Vyas Having 342 Reputation",有时候单词“Reputation”不会显示,因为它被移到了第五行。 - Vishal Vyas
我发现当设置wrap_content时,它不会转换成多行,但你需要使用match_parent或maxWidth与wrap_content一起使用。 - box
4个回答

23

我认为这是因为 "Vishal Vyas" 超过了 70dp,所以它正在自动换行。相反,在宽度上使用 wrap_content,并使用换行符代替自动换行 (即 "Vishal Vyas\n342\nReputation")。


实际上,我之前尝试过这个,但在Eclipse的“图形布局”模式下看到后感到困惑。它显示为“Vishal Vyas\nHaving\n342\nReputation”。但是当我在实际设备和模拟器上运行应用程序时,它却像魔术般地运行良好。 - Vishal Vyas
1
这实际上很有趣。我从来没有像那样将文本硬编码到TextView中。通常是一个字符串资源ID。我想知道为什么它不能解密换行符。 - DeeV
是的,我尝试使用字符串资源ID,这次“图形布局”显示了正确的输出。所以从现在开始,我再也不会使用硬编码文本了。这是一个很好的学习经验。再次感谢;) - Vishal Vyas
在xml文件中,文本“lots of text”可以分成多行吗? 例如:(+不起作用,有什么其他方法吗?) Text="Line 1"
  • "Line 2"
- AriesConnolly

14

您应该能够插入换行符 \n 来控制拆分的位置。一旦这样做,您可以扩展您的 TextView 更宽,以便它能够容纳更长的用户名,但仍然在正确的位置断开。


8
android:lines="2"
android:minLines="2"
android:singleLine="false"

即使Android Studio警告android:singleLine=false已过时,仍应保留它,这样根据文本长度就可以拥有所需行数的文本框。

1
我这样做了:

我这样做:

TextView的容器:

    android:layout_width="match_parent"
    android:layout_height="match_parent"

TextView:

    android:layout_width="match_parent"
    android:layout_height="wrap_content"

那么,

TextView的文本显示为两行或更多行...


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