You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11.3 Android中TWebBrowser设置屏幕适配缩放的方法

Delphi 11.3 Android TWebBrowser 适配屏幕宽度缩放解决方案

核心思路

Delphi的TWebBrowser底层封装了Android原生的WebView,可以通过JNI直接调用原生API实现缩放控制,和Java中setInitialScale的逻辑完全一致。

方法一:直接调用原生WebView API设置缩放

  1. 获取原生WebView对象
    通过ICustomBrowserService接口获取TWebBrowser对应的JWebView实例,这是操作原生API的核心入口。
  2. 配置WebSettings适配屏幕
    开启loadWithOverviewMode和useWideViewPort属性,让WebView自动适配屏幕宽度;也可以手动计算缩放比例调用setInitialScale实现精准控制。

代码示例

uses
  Androidapi.JNI.WebKit, Androidapi.Helpers, FMX.WebBrowser.CustomBrowser;

procedure TForm1.WebBrowser1NavigateComplete(Sender: TObject; const AURL: string);
var
  JWebView: JWebView;
  JWebSettings: JWebSettings;
  ScreenWidth: Integer;
  ZoomLevel: Integer;
begin
  // 确保浏览器已加载完成并获取原生WebView对象
  if WebBrowser1.IsBrowserVisible then
  begin
    JWebView := TJWebView.Wrap((WebBrowser1 as ICustomBrowserService).GetNativeBrowser);
    JWebSettings := JWebView.getSettings;

    // 开启自适应屏幕基础配置
    JWebSettings.setLoadWithOverviewMode(True);
    JWebSettings.setUseWideViewPort(True);

    // 可选:手动计算缩放比例(示例以网页原始宽度980px为例)
    ScreenWidth := TAndroidHelper.DisplayMetrics.WidthPixels;
    ZoomLevel := Round((ScreenWidth / 980) * 100);
    JWebView.setInitialScale(ZoomLevel);
  end;
end;

方法二:通过网页Meta标签适配

如果网页由你控制,直接在HTML的<head>中添加viewport元标签,让网页自身适配屏幕宽度,无需修改Delphi代码:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

注意事项

  • 建议在TWebBrowser的OnNavigateComplete事件中执行缩放设置,确保网页已加载完成、原生WebView对象已初始化。
  • 手动计算缩放比例时,需根据目标网页的实际原始宽度调整参数。

内容的提问来源于stack exchange,提问作者maurobio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:17:10