Java 检测第二个和第三个单词之间的空格,并将单词移动到下一行

Java 检测第二个和第三个单词之间的空格,并将单词移动到下一行,java,android,Java,Android,我在适配器中有一个名称列表。当名称高亮显示时,如果名称太长(超过2个单词),我需要将第二个单词的间隙后的单词移动到下一行,以使新行中移动的单词与适配器中的下一个名称保持相同的空间 示例中,将列表中的名称列表视为-< /P> Alex 。马丁·库珀·威尔 。托马斯 (正如你所看到的,当名字突出显示时,因为它少于2个单词,所以我不需要做任何事情) 现在, 。亚历克斯 马丁·库珀 好 。托马斯 (如您所见,当突出显示第二个名称时,因为它超过2个单词,所以我需要将第三个单词很好地放在下一行。它应该与列表

我在适配器中有一个名称列表。当名称高亮显示时,如果名称太长(超过2个单词),我需要将第二个单词的间隙后的单词移动到下一行,以使新行中移动的单词与适配器中的下一个名称保持相同的空间

示例中,将列表中的名称列表视为-< /P> Alex

。马丁·库珀·威尔

。托马斯

(正如你所看到的,当名字突出显示时,因为它少于2个单词,所以我不需要做任何事情)

现在,

。亚历克斯

马丁·库珀

。托马斯

(如您所见,当突出显示第二个名称时,因为它超过2个单词,所以我需要将第三个单词
很好地
放在下一行。它应该与列表中的下一个元素保持相同的间距)

您可以使用Split()进行此操作

在这里可以检查数组大小。如果大小/2>1,则可以添加“\n”并将字符串添加到字符串缓冲区,然后设置为listview textview


希望这将对您有所帮助。

您应该在视图布局中这样做。为双线文本视图指定足够的项目视图高度。当没有足够的水平空间容纳粗体名称(甚至是非常大的名称)时,文本将自动拆分以使用第二行。指定一个高度,所有项目将相等

<TextView
    android:id="@+id/myText"
    android:layout_height="50dp"
    android:layout_width="match_parent"
    android:maxLines="2"
    android:lines="2"/>

根据空格拆分字符串并将其存储在数组中

做下面的事情

 String name = "Martin Kooper Well";
            String[] newname = name.split(" ");

            if (newname.length>2)
            name = newname[0] +" " +newname[1] + "\n" +newname[2];
试一试


如果你能提供你想要的输入和输出,那就太好了。。。如果“名称”超过2个单词,则显示为2行。但是为什么我的tetxview仍然显示在一行中。我正在使用tv.setText(名称)您是否为布局中的textview指定了maxLines属性??如果它是“1”,那么只显示一行。我已经给了这个安卓:singleLine=“true”安卓:maxLines=“2”安卓:lines=“2”删除安卓:singleLine=“true”哦,实际上我需要它。最初,当显示名称时,它们需要以单行显示。只有当它们突出显示并且超过2个单词时,我才应该显示在下一行
 String name = "Martin Kooper Well";
            String[] newname = name.split(" ");

            if (newname.length>2)
            name = newname[0] +" " +newname[1] + "\n" +newname[2];
    String name = "some person name".trim();
    if(name.indexOf(" ") != name.lastIndexOf(" ")) {
        int secondSpacePos = name.indexOf(" ", name.indexOf(" ") + 1);
        name = name.substring(0, secondSpacePos) + "\n " + name.substring(secondSpacePos);
    }