gpt4 book ai didi

android - Delphi RAD STUDIO android 应用程序与 kitkat 4.4.2 上的状态栏重叠

转载 作者:行者123 更新时间:2023-11-29 00:08:59 24 4
gpt4 key购买 nike

我正在 android 上测试简单的 delphi 应用程序,但结果应用程序与设备上的状态栏重叠。我正在使用 android kitkat 4.4.2 和 delphi xe8。这是屏幕截图: app shown on device

我知道 delphi 使用 firemonkey 来渲染使用 OpenGL 的图形用户界面。所以我尝试在 android studio 上制作简单的项目来测试我的设备上的 openGL,以了解它是否重叠。但结果应用程序显示正常。所以我猜是内部 Delphi 操作(或可能是配置)导致了这个问题。

那么如何让delphi app在我的设备上正常显示(状态栏下方的app)?

注意:我在android ice cream sandwich and jelly bean上试了一下,app显示正常,没有重叠。

最佳答案

我已经找到了一些解决方法。

我使用 getResource 方法获取状态栏高度,并使用该值设置表单的顶部填充。但是由于状态栏高度值与 Delphi 窗体不同(在我的例子中它有更多的值),我必须通过将它除以内容高度乘以窗体高度来调整它。我认为这与像素和密度像素有关。我对此还不清楚,所以我只是使用逻辑。

代码如下:

uses
Androidapi.Helpers,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText,
AndroidApi.Jni.App;

Procedure TForm1.setPadding();
var
statusbarHeight,FormStatusbarHeight,contentHeight:integer;
view:JView;
begin
if top=0 then begin

//get status bar height
SharedActivity.getResources.getIdentifier(StringToJString('status_bar_height'),
StringToJString('dimen'),
StringToJString('android'));
if resourceID>0 then begin
statusBarHeight:=resource.getDimensionPixelSize(resourceID);
end;

//get content height
resourceid:=Resource.getIdentifier(StringToJString('content'),
StringToJString('id'),
StringToJString('android'));
if resourceID>0 then begin
view:=SharedActivity.findViewById(resourceID);
end;
contentHeight:=view.getHeight;

//count statusbar height value on form
FormStatusBarHeight:=round(statusbarheight*self.Height/contentHeight);
//set padding
self.padding.top:=FormStatusBarHeight;
end;
end;

Self.top 属性可以指示应用是否重叠。如果应用与状态栏重叠,则 self.top 的值为零。

关于android - Delphi RAD STUDIO android 应用程序与 kitkat 4.4.2 上的状态栏重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com