Delphi 11.3 Android中TWebBrowser设置屏幕适配缩放的方法
Delphi 11.3 Android TWebBrowser 适配屏幕宽度缩放解决方案
核心思路
Delphi的TWebBrowser底层封装了Android原生的WebView,可以通过JNI直接调用原生API实现缩放控制,和Java中setInitialScale的逻辑完全一致。
方法一:直接调用原生WebView API设置缩放
- 获取原生WebView对象
通过ICustomBrowserService接口获取TWebBrowser对应的JWebView实例,这是操作原生API的核心入口。 - 配置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
相关产品推荐
相关产品推荐

