gpt4 book ai didi

android - TextView - 分割线

转载 作者:太空狗 更新时间:2023-10-29 14:02:08 25 4
gpt4 key购买 nike

我在 FrameLayout 中有 TextView。 Textview 与 FrameLayout 的左下角对齐并具有特定的 MaxWidht。

目前看起来是这样的:

Lorem ipsum dolor sit amet, vel et

alia fierent forensibus.

我想实现的是这样的:

Lorem ipsum dolor

sit amet, vel et alia fierent forensibus.

所以基本上,文本应该按底线的宽度分割,而不是按顶线的宽度分割。

有没有简单的方法可以做到这一点?

布局.xml

<FrameLayout
android:id="@+id/flHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="orem ipsum dolor sit amet, vel et alia fierent forensibus."
android:id="@+id/txtHeader"
android:layout_gravity="left|bottom"
android:textColor="#ffffff"
android:layout_below="@id/txtDescriptionShort"
android:maxWidth="400dp" />

</FrameLayout>

非常感谢任何帮助!

提前谢谢你。

最佳答案

一个快速而肮脏的解决方案可能是以下功能:

private String format(String s, int maxLength) {
String s2 = s.substring(s.indexOf(' ', s.length() - maxLength) + 1);
return s.substring(0, s.length() - s2.length()) + "\n" + s2;
}

用过的:

String s = "Lorem ipsum dolor sit amet, vel et alia fierent forensibus."
int tvMaxLength = 45;

txtHeader.setText(format(s, tvMaxLength));

它当然只适用于两行文本并且容易出错。

“自下而上”“填充”文本行的函数的更好候选者可能看起来像这样。

private String formatMultiline(String s, int maxLength) {

if (s == null || s.length() == 0) {
return "";
}

if (maxLength < 1) {
return s;
}

StringBuilder sb = new StringBuilder(s);
int position = sb.length() - 1;
while (position >= maxLength - 1) {
position = s.indexOf(' ', position - maxLength + 1);
sb.setCharAt(position, '\n');
}
return sb.toString();
}

请注意,我只做了非常基本的测试。例如,该函数假定字符串中没有双空格。

关于android - TextView - 分割线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com