Android平台动态ListView文本对象Character裁剪失效求助
解决Android平台FireMonkey ListView文本裁剪无效的问题
针对你遇到的Windows平台文本裁剪正常、Android平台无效果的问题,核心是FireMonkey在Android上对TListItemText的裁剪逻辑需要额外约束配置,以下是具体修正方案:
- 必须设置
MaxLines属性:当WordWrap=True时,Trimming.Character需要配合MaxLines限制文本行数,否则文本会自动换行扩展,不会触发裁剪。比如限制为2行,超出部分就会显示省略号。 - 确保文本对象有明确的宽度约束:Android平台上如果
TListItemText宽度未被限制(比如设为自动扩展),裁剪逻辑不会生效。可以设置Align为Client让它自适应父容器宽度,或者直接指定固定宽度。
修改你的代码如下:
procedure TfrmJob.lvWorksheetsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var TextObj: TListItemText; begin TextObj := AItem.Objects.FindDrawable('Description') as TListItemText; TextObj.Trimming := TTextTrimming.Character; TextObj.WordWrap := True; // 设置最大显示行数,可根据需求调整 TextObj.MaxLines := 2; // 绑定文本对象宽度到列表项宽度,避免溢出 TextObj.Align := TListItemAlign.Client; end;
额外注意事项:
- 若你的Delphi版本低于10.4 Sydney,可能存在FireMonkey Android控件的渲染bug,建议升级到最新稳定版本。
- 若文本对象嵌套在
TListItemLayout中,需确保Layout本身宽度固定或自适应列表项,避免文本对象获得无限制宽度。
内容的提问来源于stack exchange,提问作者Shane
相关产品推荐
相关产品推荐

