Тема оказалась настолько интересна что занялся ей подробней.
Мы с zairkz убили много времени, чтобы понять как выкрасить в один цвет без полупрозрачности, взяв скриншот и фотошоп определили, что затемнение происходит на 40%
Решение родилось само собой, затемнить цвет ToolBar'a на 40% и цвет выровняется.
Казалось бы можно осветлить цвет для подложки и цвет тоже выровнится, но например белый или светлые цвета нельзя еще осветлить.
также написал процедуру для определения высоты статус бара и панели навигации
procedure androidGetBounds(out statusBar, navigationBar: Integer);
{$IFDEF ANDROID}
var
KeyCharacterMap: JKeyCharacterMap;
resourceID: Integer;
ScreenService: IFMXScreenService;
sScale: Single;
{$ENDIF}
begin
navigationBar := 0;
statusBar := 0;
{$IFDEF ANDROID}
if TOSVersion.Check(5, 0) then // вроде только работает с 5.0 ниже нет устройства проверить
begin
sScale := 1;
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
sScale := ScreenService.GetScreenScale; //получаем скейл
resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('status_bar_height'),
StringToJString('dimen'), StringToJString('android'));
if resourceID > 0 then
statusBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale);
if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then
// проверка на существование наэкранных кнопок или физических
begin
resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'),
StringToJString('dimen'), StringToJString('android'));
if resourceID > 0 then
navigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale);
end;
end;
{$ENDIF}
end;
и в модуле FMX.Platform.Android нужно изменения внести (если вы используете измененный модуль для Intel'а)
// Fix by Flying Wang &
CallInUIThread(
procedure
begin
if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and
TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) and
(SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS <>
TJWindowManager_LayoutParams.JavaClass.FLAG_TRANSLUCENT_STATUS) // fix by ZuBy
...
SystemBar.zip