Delphi DX Seattle FMX TListView HeaderItem - 隐藏非白色背景上的白色阴影文本

时间:2015-11-23 07:23:05

标签: delphi listview firemonkey

我注意到当你更改ListView标题背景颜色时,会出现一个奇怪的白色文本,如阴影

enter image description here

有谁知道如何摆脱白色阴影?

重现的步骤

创建一个FMX项目,在其上放置一个列表视图并将其与客户端对齐 右键单击列表视图,然后选择编辑自定义样式
在lv1style1:TFmxObject中找到头结构
enter image description here

选择源链接属性并将默认选定区域移动到其他颜色 enter image description here

在表单create上填充列表视图 - 使用类似

的代码
var lvitem : TListViewItem;
begin
  lvitem := lv1.Items.Add;
  lvitem.Text := 'Header';
  lvitem.Purpose := TListItemPurpose.Header;
  lvitem.Detail := '';


  lvitem := lv1.Items.Add;
  lvitem.Text := 'none';
  lvitem.Purpose := TListItemPurpose.None;

  lvitem := lv1.Items.Add;
  lvitem.Text := 'footer';
  lvitem.Purpose := TListItemPurpose.Footer;

如果您有任何疑问,请在下面发表评论 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

有一个TextLabel.TextShadowColor设置
在List视图OnUpdateObjects
上 添加了以下代码

procedure TForm1.lv1UpdateObjects(const Sender: TObject;
  const AItem: TListViewItem);
var
  TextLabel: TListItemText;
begin
  if AItem.Purpose in [TListItemPurpose.Header, TListItemPurpose.Footer] then begin
    TextLabel := AItem.Objects.TextObject;
    TextLabel.TextShadowColor := TalphaColorRec.Null;
  end;
end;

No Shadow

答案 1 :(得分:0)

看一下ListView样式的内部结构,可能会发现有“ headetext”颜色对象。推断某些ListView代码应加载颜色对象以反映当前样式,我们可以在FMX pas文件中进行搜索,然后找到以下样式代码:

  // Item Colors

FStyleResources.DefaultTextColor:= GetColorFromStyle('foreground',claBlack);   FStyleResources.DefaultTextSelectedColor:= GetColorFromStyle('selectiontext',claBlack);   FStyleResources.DetailTextColor:= GetColorFromStyle('detailtext',claBlack);   FStyleResources.HeaderTextColor:= GetColorFromStyle('headertext',claWhite);   FStyleResources.HeaderTextShadowColor:= GetColorFromStyle('headertextshadow',claWhite);

因此,有 IS 选项可以通过样式控制文本阴影的颜色,而控制阴影颜色的样式部分就不存在。 好吧,将“ headertextshadow” TColorObject添加到每个对应的ListView样式中,并将其颜色设置为Null,可以解决您的情况,而无需任何代码。