Android Webview-Веб-страница должна соответствовать экрану устройства
я попробовал следующее, чтобы соответствовать веб-странице на основе размера экрана устройства.
mWebview.setInitialScale(30);
а затем установите окно просмотра метаданных
<meta name="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;"/>
<meta name="viewport" content="width=device-width, target-densityDpi=medium-dpi"/>
но ничего не работает, страницы не фиксируется к размеру экрана устройства.
может кто-нибудь сказать мне, как получить это?
19 ответов:
вы должны рассчитать данные, которые нужно использовать вручную, а не на 30.
private int getScale(){ Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int width = display.getWidth(); Double val = new Double(width)/new Double(PIC_WIDTH); val = val * 100d; return val.intValue(); }затем использовать
WebView web = new WebView(this); web.setPadding(0, 0, 0, 0); web.setInitialScale(getScale());
вы можете использовать этот
WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true);это фиксирует размер на основе размера экрана.
друзья,
Я нашел много импорта и большой информации от вас. Но, единственный способ работает для меня был таким образом:
webView = (WebView) findViewById(R.id.noticiasWebView); webView.setInitialScale(1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView.setScrollbarFadingEnabled(false); webView.loadUrl("http://www.resource.com.br/");Я работаю на Android 2.1 из-за типа устройств от компании. Но я исправил свою проблему, используя часть информации от каждого из них.
спасибо вам!
попробуйте с этим HTML5 советы
http://www.html5rocks.com/en/mobile/mobifying.html
и с этим, если ваша версия Android 2.1 или выше
WebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
эти настройки работали для меня:
wv.setInitialScale(1); wv.getSettings().setLoadWithOverviewMode(true); wv.getSettings().setUseWideViewPort(true); wv.getSettings().setJavaScriptEnabled(true);setInitialScale(1) не хватало в моих попытках.
хотя документация говорит, что 0 будет увеличивать весь путь, если setUseWideViewPort установлено значение правда но 0 не работает для меня, и я должен был поставить 1.
они работают для меня и соответствуют WebView для ширины экрана:
// get from xml, with all size set "fill_parent" webView = (WebView) findViewById(R.id.webview_in_layout); // fit the width of screen webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); // remove a weird white line on the right size webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);спасибо выше советует и белая линия в веб-представлении eclipse
все, что вам нужно сделать, это просто
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true);
у меня такая же проблема, когда я использую этот код
webview.setWebViewClient(new WebViewClient() { }Так, может быть, вы должны удалить в коде
И не забудьте добавить 3 режима ниже для вашего webviewwebview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setLoadWithOverviewMode(true); webview.getSettings().setUseWideViewPort(true);это фиксирует размер на основе размера экрана
WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); browser.getSettings().setMinimumFontSize(40);это отлично работает для меня, так как размер текста был установлен на очень маленький.setLoadWithOverViewMode и .setUseWideViewPort.
в этом случае вы должны использовать HTML в своем веб-представлении. Я решил это, используя следующий код
webView.loadDataWithBaseURL(null, "<!DOCTYPE html><html><body style = \"text-align:center\"><img src= " + \"http://www.koenvangorp.be/photos/2005_09_16-moon_2000.jpg\" + " alt=\"pageNo\" width=\"100%\"></body></html>", "text/html", "UTF-8", null);
это похоже на проблему XML. Откройте XML-документ, содержащий веб-представление. Удалите код заполнения в верхней части.
затем в макет добавьте
android:layout_width="fill_parent" android:layout_height="fill_parent"в веб-представлении добавьте
android:layout_width="fill_parent" android:layout_height="fill_parent"это делает веб-вид соответствует экрану устройства.
внесение изменений в ответ по danh32 с момента отображения.getWidth(); теперь устарел.
private int getScale(){ Point p = new Point(); Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); display.getSize(p); int width = p.x; Double val = new Double(width)/new Double(PIC_WIDTH); val = val * 100d; return val.intValue(); }затем использовать
WebView web = new WebView(this); web.setPadding(0, 0, 0, 0); web.setInitialScale(getScale());
метод getWidth экранного объекта является устаревшим. Переопределите onSizeChanged, чтобы получить размер WebView, когда он станет доступным.
WebView webView = new WebView(context) { @Override protected void onSizeChanged(int w, int h, int ow, int oh) { // if width is zero, this method will be called again if (w != 0) { Double scale = Double.valueOf(w) / Double.valueOf(WEB_PAGE_WIDTH); scale *= 100d; setInitialScale(scale.intValue()); } super.onSizeChanged(w, h, ow, oh); } };
webview.setInitialScale(1); webview.getSettings().setLoadWithOverviewMode(true); webview.getSettings().setUseWideViewPort(true); webview.getSettings().setJavaScriptEnabled(true);будет работать, но не забудьте удалить что-то вроде:
<meta name="viewport" content="user-scalable=no"/>если существует в html-файле или изменить user-scalable=да, в противном случае это не будет.
у меня было видео в html-строке, а ширина веб-представления была больше ширины экрана, и это работает для меня.
добавьте эти строки в строку HTML.
<head> <meta name="viewport" content="width=device-width"> </head>Результат после добавления кода выше в строку HTML:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width"> </head> </html>
Это поможет в настройке эмулятора в соответствии с веб-страницей:
WebView wb; //CALL THIS METHOD wb.setInitialScale(50);вы можете установить исходные данные в процентах, как показано выше.
в теории сочетание:
settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);С
settings.setUseWideViewPort(false)устраняет проблему, обертывая содержимое и подгоняя его к экрану. Но это NARROW_COLUMNS была прекращена. Я советую вам прочитать эту тему ниже, которая подробно исследует проблему:https://code.google.com/p/android/issues/detail?id=62378
WebView webView = (WebView)findViewById(R.id.web_view); webView.setInitialScale((int) getResources().getDimension(R.dimen._50sdp)); // getActivity(). if you are at Fragment webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadDataWithBaseURL(null,here comes html content,"text/html","UTF-8", null); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSupportZoom(true); webView.getSettings().setDisplayZoomControls(true); webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
Comments