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

标签 android delphi firemonkey

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

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

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

注意:我在 Android Ice Cream Sandwich 和果冻 bean 上尝试过,应用程序显示正常且不重叠。

最佳答案

我找到了一些解决方法。

我使用 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/

相关文章:

delphi - Firemonkey:在带有 BorderStyle None 的表单中使用 TWebBrowser 时不显示

user-interface - 如何以编程方式将图像插入 FireMonkey 中的图像列表?

delphi - TClientDataSet.Locate 不处理重音

android - 在 Flutter 应用的 ListView.builder 中添加滚动

java - Android 的换行小部件布局

delphi - Delphi中的抽象类

class - Delphi类析构函数

android - 同一 Activity Kotlin 中的抽屉导航和底部导航

android - 适用于 Android 的 Firebase - W/PersistentConnection : pc_0 - Provided authentication credentials are invalid

delphi - delphi 中的表单切换