当您使用TextOverflow.clip
或TextOverflow.ellipses
时,当文本中有多个单词时,会在文本边界处将文本剪裁。
但是,当Text()
的文本数据只是一个长字时,它只会将其剪切到最后一个可能的位置。
示例:在带字幕的图像上,我不希望标签“ Mr Ihaveanunusuallylongsurname”仅在图像下方显示“ Mr”,而除最后几个字符以外的所有字符都可以容纳。
在中间的照片上,您可以看到在“先生...:...”之后有很多可用空间。我希望在可用空间中尽可能多地显示Mr Ihaveanunusuallylongsurname
帮助用户识别哪个。
如何使Text()能够在忽略单词中断的情况下进行裁剪,例如当文本中只有一个单词时?
class ClippedText extends StatelessWidget {
final String text;
final TextAlign textAlign;
final TextStyle style;
final int maxLines;
const ClippedText(this.text,
{Key key, this.textAlign, this.style, this.maxLines})
: super(key: key);
@override
Widget build(BuildContext context) {
return Text(
text,
style: style,
textAlign: textAlign,
maxLines: maxLines ?? 10,
overflow: TextOverflow.ellipsis,
);
}
}
注意:我使用上面的ClippedText代替Text()。通常,未设置maxLines时,文字会自动换行。但是,为了在使用ClippedText时达到这种效果,我需要为封装的Text小部件提供maxLines的默认值,该默认值不为null。我无法弄清楚未提供maxLines时传递给Text的真正默认值是什么。
答案 0 :(得分:0)
使用https://en.wikipedia.org/wiki/Non-breaking_space
>>> df['C'].apply(lambda x: re.sub(r'[^a-zA-Z ]+', ' ', str(x)))
0 Empty
1 Yes
2 Male female
3 Yes
4
Name: C, dtype: object