Android Webview, масштабирование контента по размеру экрана - PullRequest
3 голосов
/ 22 ноября 2011

Мой друг создал приложение, используя javascript, и загрузил его на свой веб-сайт.

Теперь я пытаюсь включить его в веб-просмотр в Android, и в некоторых случаях он работает нормально.

Страница размером 480x320

Но независимо от того, какой размер экрана я выбираю на Android, в веб-представлении внизу есть пустое пространство.Я перепробовал множество способов сделать его масштабированным, но ничего не получилось.

Мой код на данный момент - это

    final WebView browser = (WebView)findViewById(R.id.webview);   
    browser.getSettings().setJavaScriptEnabled(true);
    browser.loadUrl("http://page.xx");  

Ответы [ 3 ]

14 голосов
/ 27 августа 2013

Мне нужно было масштабировать, чтобы соответствовать ширине, и этот вариант ответа FunkTheMonk хорошо сработал для меня:

@Override
public void onPageFinished(android.webkit.WebView view, String url)
{
    super.onPageFinished(view, url);

    WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);

    DisplayMetrics metrics = new DisplayMetrics();
    manager.getDefaultDisplay().getMetrics(metrics);

    metrics.widthPixels /= metrics.density;

    loadUrl("javascript:var scale = " + metrics.widthPixels + " / document.body.scrollWidth; document.body.style.zoom = scale;");
}
10 голосов
/ 22 ноября 2011
wb.loadUrl("javascript:document.body.style.zoom = "+String.valueOf(scale)+";");

Где scale - это число с плавающей точкой, которое вы могли бы вычислить - я думаю, в вашем случае вам нужно что-то вроде следующего: browser.getHeight() / 480dp. Загрузите этот URL после завершения загрузки вашей веб-страницы.

3 голосов
/ 22 ноября 2011

Можете ли вы попробовать добавить:

browser.getSettings().setBuiltInZoomControls(true);
browser.setInitialScale(1);
browser.setPadding(0, 0, 0, 0);

И посмотреть, работает ли он?

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