我想在我新创建的 Delphi XE8 Firemonkey 应用程序中设置状态栏的背景颜色(和前景色)。状态栏是指带有时间和 wifi 小部件的顶部栏。
我只是找不到它。我需要一些帮助 :-)
谢谢,爱德华
我想在我新创建的 Delphi XE8 Firemonkey 应用程序中设置状态栏的背景颜色(和前景色)。状态栏是指带有时间和 wifi 小部件的顶部栏。
我只是找不到它。我需要一些帮助 :-)
谢谢,爱德华
来自 Harry Stahl 的“Cross-Platform Development with Delphi XE7 and FireMonkey for Windows & MAC OS X”一书的推荐
TStatusbar(一种弥补缺失“面板”的方法)
在 VCL 状态栏中,您可以在“面板”属性上或通过“SimpleText”属性显示文本。在 FireMonkey 状态栏中,没有任何类似的内容,没有文本属性。因此,您可以将状态栏用作容器,例如,插入 Labels 。
更好的解决方案:只需使用 TGrid!正如您在下面显示的屏幕截图中看到的那样,我在 StatusBar 中包含了一个 TGrid。在 TGrid 中,我添加了 2 个 TStringColumns、一个 TImageColumn、一个 TStringColumn 和一个 TProgressColumn。在 Objectinspector 中,我为 TGrid 设置了:
表单的 Fill.Color 控制工具栏的颜色,该颜色的平均亮度控制文本是白色还是黑色
Borderstyle 必须为 <> None,否则工具栏将被隐藏。
如果您有多个表单,则不清楚使用哪种表单,但它似乎是项目文件中自动创建的最后一个表单。
以下是一些相关的源代码,FMX.Platform.iOS.pas
它记录了文本的颜色:
procedure TPlatformCocoaTouch.UpdateStatusBarColor(const AForm: TCommonCustomForm);
...
AppDelegate.MainWindow.RootViewController.SetStatusBarBackgroundColor((AForm as TCustomForm).Fill.Color);
...
procedure TFMXViewController.SetStatusBarBackgroundColor(const ABackgroundColor: TAlphaColor);
...
FStatusBarLuminance := Luminance(ABackgroundColor);
...
function TFMXViewController.preferredStatusBarStyle: UIStatusBarStyle;
begin
if FStatusBarLuminance < 0.5 then
Result := UIStatusBarStyleLightContent
else
Result := UIStatusBarStyleDefault;
end;
PS。我还有另一个未回答的关于如何使状态栏透明的问题,这是本机 iOS 7+ 行为。