2015-07-24 1 views
2

Я тестирую простое приложение delphi на Android, но приложение-результат перекрывается со строкой состояния на устройстве. Я использую android kitkat 4.4.2 и delphi xe8. Вот скриншот: app shown on deviceПриложение для Android-приложений Delphi RAD STUDIO со статусной строкой на kitkat 4.4.2

Я знаю, что в delphi используется firemonkey, который отображает gui с помощью OpenGL. Поэтому я пытаюсь сделать простой проект на студии Android для тестирования openGL на моем устройстве, чтобы узнать, перекрывается ли это или нет. Но результат приложения показан нормально. Поэтому я предполагаю, что это внутренняя операция delphi (или конфигурация, возможно), которые создают эту проблему.

Итак, как я могу заставить приложение delphi нормально отображаться на моем устройстве (приложение ниже строки состояния)?

Примечание: Я пробовал его на сэндвиче и желе желе для андроидов, приложение отображается нормально и не перекрывается.

ответ

2

Я нашел некоторое обходное решение для этого.

Я получаю строку состояния с использованием метода 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 имеет значение 0.

Смежные вопросы