Я разрабатываю гибридное приложение на Android, которое отображает HTML в WebView. Я хочу увеличить масштаб экрана путем сжатия пальцев, но BuiltInZoom не работает (не может увеличивать / уменьшать масштаб), когда я получаю событие касания на стороне JavaScript. Это происходит с Pixel 4 (Android 10), но он правильно работает с Pixel 3 (Android 9).
То, что я уже пробовал
- Если я не нет события касания в JavaScript, я могу увеличивать и уменьшать масштаб.
- Поскольку событие защемления вызывается в onScale, я могу получить текущий диапазон и применить его к onDraw.
- Однако это нежелательно, потому что оно не отражает «максимальный масштаб» HTML «области просмотра». Я хочу управлять максимальным увеличением в соответствии с "окном просмотра".
Я получаю событие касания, как показано ниже.
view.addEventListener('touchstart', (e) => {
console.log('touchstart');
});
view.addEventListener('touchmove', (e) => {
console.log('touchmove');
});
Я установил BuiltInZoom на включение Android.
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(true);
webView.getSettings().setSupportZoom(true);
Примечание
- Это происходит с Pixel 4 (Android 10) и Galaxy Tab S4 (Android 9), но корректно работает с Pixel 3 (Android 9).
- Я могу увеличивать масштаб, используя элементы управления масштабированием, но это уже устарело.
- Я могу увеличивать масштаб после длительного нажатия на экран одним пальцем.
- I можно увеличивать, помещая один палец на элемент, для которого я не получаю событие касания.
- onScale вызывается всякий раз, когда я выполняю щипковое действие.
- WebViewClient.onScaleChanged вызывается только тогда, когда его можно масштабировать .
- Я изменяю «максимальный масштаб» HTML «области просмотра» динамически, потому что некоторые страницы разрешено увеличивать, а другие - нет.