我在FrameLayout中有TextView。 Textview与FrameLayout的左下角对齐,并具有特定的MaxWidht。
目前看起来像这样:
Lorem ipsum dolor sit amet,vel et
alia fierent forensibus。
我想要实现的目标是:
Lorem ipsum dolor
坐下来,特别是fierent forensibus。
所以基本上,文本应该按底线的宽度分割,而不是顶行。
有没有简单的方法来实现这一目标?
Layout.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>
非常感谢任何帮助!
提前谢谢。
答案 0 :(得分:1)
快速而肮脏的解决方案可能是以下功能:
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));
它当然只适用于两行文本,并且容易出错。
一个更好的候选人,可以填充&#39;填充&#39;文字行&#39;自下而上&#39;可能看起来像那样。
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();
}
请注意,我只进行了非常基本的测试。例如,函数假定字符串中没有双重空格。
答案 1 :(得分:0)
你可以这样做
<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="Lorem ipsum dolor\n\nsit 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" />