如果可以使用代碼隨意設置 ListView 的顏色,而不用加載額外的 Style 及修改官方的源碼,那該有多好?! 其實 Style 提供了很強了擴充性及可塑性,可以很容易的去操作它。
下面以 ListView 為例,用代碼設置它的 ItemBackgroud 顏色(其它的控件基本上也能用相同的方法來設置):
procedure TForm1.ListView1ApplyStyleLookup(Sender: TObject); var o1: TFmxObject; o2: TFmxObject; c: TAlphaColor; begin if Sender = ListView1 then c := TAlphaColorRec.Lightyellow else c := TAlphaColorRec.Mistyrose; o1 := TStyleManager.ActiveStyleForScene(Screen.ActiveForm as IScene).FindStyleResource('listviewstyle'); o2 := o1.FindStyleResource('itembackground'); // 需要判斷第一次才設置顏色,否則會影響效能 if (o2 is TColorObject) and (TColorObject(o2).Color <> c) then begin TColorObject(o2).Color := c; TListView(Sender).NeedStyleLookup; end; end;
注意:此方法僅適用 Windows 平台,移動平台還是乖乖的用 Style 吧!
示例下載:[示例]用代碼設置ListView顏色_Aone.zip
效果:(多個 ListView 可以各別設置不同顏色)