好消息!FMXUI正式支持Android和IOS的沉侵式狀態欄了。
先來看看效果圖
安卓:
IOS:
一、Android 沉侵式狀態欄
FMXUI的沉侵式狀態欄支持SDK版本大於21的Android系統(也就是安卓5.0或更新的系統版本)。
第一步: 將 FMXUI 中的 res\android\styles_translucent.xml 加入 Deployment 中,並將 Remote Path 設為 “res\values-v19\”。
第二步: 在主 Form 的 Create 事件中,增加如下代碼:
procedure TForm1.FormCreate(Sender: TObject); begin TFrameView.SetDefaultStatusColor($ff800080); TFrameView.SetDefaultBackColor($fff1f2f3); end;
其中,SetDefaultStatusColor 是設置默認的狀態條顏色。SetDefaultBackColor 是設置默認的背景色。需要注意的是,如果不設置默認的背景色,那么在設置狀態條顏色后,默認的背景色為淺灰色(0xfff1f2f3)。
注意:在使用沉侵式狀態欄后,代碼中使用 LocalToAbsolute 來計算絕對位置對控件進行定位的地方如果出現異常,可以將Y坐標減去TView.GetStatusHeight(狀態條高度)。
二、iOS 沉侵式狀態欄
iOS實際上默認就是沉侵式狀態欄。它的狀態欄顏色就是當前窗體的 Fill 的顏色。
在 FMXUI 中,為了統一編碼,一樣需要 按照Android的方式的第二步進行操作 。
三、 設置主窗口Fill
如果通過上面兩步還不能實現,或者出來的狀態欄顏色異常,檢查 把主窗體的Fill參數的kind, 改為Solid 就可以 了。