Android WebView не учитывает процент масштабирования - PullRequest
8 голосов
/ 11 июня 2010

У меня есть WebView , который я пытаюсь увеличить до определенного процента при загрузке страницы. Версия этого программного обеспечения для iPhone использует метатег HTML:

<meta name="viewport" content="width=320, initial-scale=0.95, maximum-scale=2.0, user-scalable=1">

Поскольку в WebView Android, похоже, не учитывается этот тег, я жестко закодировал процент с помощью setInitialScale () . Тем не менее, WebView просто игнорирует этот вызов метода. Независимо от того, какое число я добавлю, оно показывает 100%.

Идеи

Обновление: Он не работает в эмуляторе, на моем Droid (Motorola) или на моем G1 (HTC).

Ответы [ 6 ]

5 голосов
/ 12 июня 2010

Некоторые устройства HTC имеют проблемы с WebView, попробуйте этот фрагмент!

import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;

myWebView = new WebView(this);
myWebView.getSettings().setLoadsImagesAutomatically(true);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.setInitialScale(100);      
try {
   Method m = myWebView.getClass().getMethod("setIsCacheDrawBitmap", boolean.class);
    if (m != null) {
        m.invoke(myWebView, false);
        myWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
    }
} catch (NoSuchMethodException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}

myWebView.loadUrl("http://www.stackoverflow.com");
1 голос
/ 29 сентября 2011

Код ниже помог мне, когда мой не отвечал.Стоит выстрел:

mywebview.setWebViewClient(new WebViewClient()); 
mywebview.getSettings().setSupportZoom(true) ; 
mywebview.getSettings().setUseWideViewPort(true) ; 
mywebview.setInitialScale(1) ; 
mywebview.loadUrl(sURL); 
1 голос
/ 12 июня 2010

Вы включили поддержку масштабирования для своего веб-просмотра?

    WebSettings webSettings = mywebView.getSettings();
    webSettings.setSupportZoom(true);       
0 голосов
/ 20 июня 2010

Тег meta работает для меня, если я разделяю параметры точкой с запятой (;) вместо запятых (,).Я использовал это в прошлом:

<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />

И это работает, по крайней мере, в браузере.Я не уверен насчет WebView, но, возможно, стоит попробовать.

0 голосов
/ 19 июня 2010

Можно увидеть несколько вариантов.

1.Возможно, что-то не так с вашим кодом.Вот самый простой код, и я могу сказать, что он работает для меня.Содержание масштабируется.

WebView webview1 = (WebView) findViewById(R.id.webview1);
webview1.setInitialScale(30);
webview1.loadUrl("http://stackoverflow.com");

Поэтому, пожалуйста, оставьте свой код.Весь код связан с настройкой WebView.Я тестирую на эмуляторе 2.2

2.Возможно, что-то не так с URL, который вы тестируете.Вы можете проверить "http://stackoverflow.com", когда я проверяю его, и он отлично масштабируется.

3. Может быть, мы используем разные SDK. Какой SDK вы создаете? Я имею в виду, какова ваша цель по умолчанию.properties? Что такое ваш-sdk в AndroidManifest.xml?

Вот простой тест, который мне подходит http://open -pim.com / tmp / WebViewTest.zip .может попробовать тоже.

0 голосов
/ 19 июня 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...