This is an automated email from the ASF dual-hosted git repository.

GitToTheHub pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/cordova-plugin-inappbrowser.git


The following commit(s) were added to refs/heads/master by this push:
     new 24c6738  feat(android): make zoom on-screen controls configurable 
(#1023)
24c6738 is described below

commit 24c6738c68441fd62b46b62d23480917d266c714
Author: Mark Hartmann <[email protected]>
AuthorDate: Thu May 7 19:25:17 2026 +0200

    feat(android): make zoom on-screen controls configurable (#1023)
    
    - This change adds a settable option `zoomcontrols` in addition to `zoom` 
at initialisation of the Inappbrowser instance. This enables a separation 
between zoom-controls (pinch-to-zoom) and additionally showing zoom-buttons to 
manually adjust zooming.
    - Fixes https://github.com/apache/cordova-plugin-inappbrowser/issues/1022
    ---------
    
    Co-authored-by: Mark Jenzer <[email protected]>
    Co-authored-by: Mark Hartmann <[email protected]>
---
 README.md                     |  3 ++-
 src/android/InAppBrowser.java | 18 ++++++++++++++++--
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index e2fe4d3..9f0bd3f 100644
--- a/README.md
+++ b/README.md
@@ -129,7 +129,8 @@ instance, or the system browser.
     - __navigationbuttoncolor__: set to a valid hex color string, for example: 
`#00ff00`, and it will change the color of both navigation buttons from 
default. Only has effect if user has location set to `yes` and not 
hidenavigationbuttons set to `yes`.
     - __toolbarcolor__: set to a valid hex color string, for example: 
`#00ff00`, and it will change the color the toolbar from default. Only has 
effect if user has location set to `yes`.
     - __lefttoright__: Set to `yes` to swap positions of the navigation 
buttons and the close button. Specifically, navigation buttons go to the right 
and close button to the left. Default value is `no`.
-    - __zoom__: set to `yes` to show Android browser's zoom controls, set to 
`no` to hide them.  Default value is `yes`.
+    - __zoom__: Enables pinch-to-zoom gesture. Set to `no` to disable it. 
Default value is `yes`.
+    - __zoomcontrols__: set to `yes` to show Android browser's zoom controls, 
set to `no` to hide them. Default value is `yes`. The zoom controls are 
deprecated since Android API Level 26 (Android 8). Google recommends to disable 
them.
     - __mediaPlaybackRequiresUserAction__: Set to `yes` to prevent HTML5 audio 
or video from autoplaying (defaults to `no`).
     - __shouldPauseOnSuspend__: Set to `yes` to make InAppBrowser WebView to 
pause/resume with the app to stop background audio (this may be required to 
avoid Google Play issues like described in 
[CB-11013](https://issues.apache.org/jira/browse/CB-11013)).
     - __useWideViewPort__: Sets whether the WebView should enable support for 
the "viewport" HTML meta tag or should use a wide viewport. When the value of 
the setting is `no`, the layout width is always set to the width of the WebView 
control in device-independent (CSS) pixels. When the value is `yes` and the 
page contains the viewport meta tag, the value of the width specified in the 
tag is used. If the page does not contain the tag or does not provide a width, 
then a wide viewport wil [...]
diff --git a/src/android/InAppBrowser.java b/src/android/InAppBrowser.java
index bb3495f..f220b9f 100644
--- a/src/android/InAppBrowser.java
+++ b/src/android/InAppBrowser.java
@@ -95,6 +95,7 @@ public class InAppBrowser extends CordovaPlugin {
     private static final String EXIT_EVENT = "exit";
     private static final String LOCATION = "location";
     private static final String ZOOM = "zoom";
+    private static final String ZOOMCONTROLS = "zoomcontrols";
     private static final String HIDDEN = "hidden";
     private static final String LOAD_START_EVENT = "loadstart";
     private static final String LOAD_STOP_EVENT = "loadstop";
@@ -129,6 +130,7 @@ public class InAppBrowser extends CordovaPlugin {
     private EditText edittext;
     private CallbackContext callbackContext;
     private boolean showLocationBar = true;
+    private boolean enableZoom = true;
     private boolean showZoomControls = true;
     private boolean openWindowHidden = false;
     private boolean clearAllCache = false;
@@ -632,6 +634,7 @@ public class InAppBrowser extends CordovaPlugin {
     public String showWebPage(final String url, HashMap<String, String> 
features) {
         // Determine if we should hide the location bar.
         showLocationBar = true;
+        enableZoom = true;
         showZoomControls = true;
         openWindowHidden = false;
         mediaPlaybackRequiresUserGesture = false;
@@ -649,7 +652,11 @@ public class InAppBrowser extends CordovaPlugin {
             }
             String zoom = features.get(ZOOM);
             if (zoom != null) {
-                showZoomControls = zoom.equals("yes") ? true : false;
+                enableZoom = zoom.equals("yes");
+            }
+            String zoomcontrols = features.get(ZOOMCONTROLS);
+            if (zoomcontrols != null) {
+                showZoomControls = zoomcontrols.equals("yes");
             }
             String hidden = features.get(HIDDEN);
             if (hidden != null) {
@@ -947,7 +954,14 @@ public class InAppBrowser extends CordovaPlugin {
                 WebSettings settings = inAppWebView.getSettings();
                 settings.setJavaScriptEnabled(true);
                 settings.setJavaScriptCanOpenWindowsAutomatically(true);
-                settings.setBuiltInZoomControls(showZoomControls);
+                // setBuiltInZoomControls enables pinch-to-zoom and also the 
on-screen zoom controls
+                // The zoom controls have to be disabled separately by 
setDisplayZoomControls
+                // This is the recommended way by Google
+                settings.setBuiltInZoomControls(enableZoom);
+                // Enable/Disable on-screen zoom controls.
+                // These are deprecated since Android API Level 26 (Android 8).
+                // Google recommends to disable them
+                settings.setDisplayZoomControls(showZoomControls);
                 
settings.setPluginState(android.webkit.WebSettings.PluginState.ON);
                 
                 // download event


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to