Intereting Posts
Android: дублирование фрагментов при использовании поддержки Fragment Manager GetActivity (). FindViewById возвращает null, вызывается из фрагмента onActivityCreated Получение возвращенной строки из AsyncTask в Android Как создать сенсорный экран андроида прокрутки в unity3d? Никаких изменений в развертывании Android-студии 2.1 Как отключить Keyguard и отобразить активность для пользователя при срабатывании приемника SCREEN_ON? Построить проект Android с Jenkins: не удалось инициализировать аналитику ViewPager.PageTransformer не может быть разрешен для типа Как включить мигающий курсор в SearchView Android Как отключить «автономный режим» gradle в студии Android? Получите уровень заряда аккумулятора, прежде чем радиовещательный приемник ответит на Intent.ACTION_BATTERY_CHANGED Настроить Live Reload на Ionic-проект на основе генератор-глотков-угловых Как знать нажатия клавиш в edittext Как использовать метод OnWindowFocusChanged Попытка масштабировать Bitmap на Android не работает

Android: загрузка / содержимое веб-страницы в центре

Я загрузил изображение с помощью WebView но когда оно уменьшено, максимальное изображение помещается в верхнем левом углу моего устройства. В любом случае, чтобы загрузить изображение, оно отображается в центре?

Ура!

Вы можете использовать этот код для центрирования изображения в центре экрана в WebView:

  //first you will need to find the dimensions of the screen float width; float height; float currentHeight; WebView mWebView; //this function will set the current height according to screen orientation @Override public void onConfigurationChanged(Configuration newConfig){ if(newConfig.equals(Configuration.ORIENTATION_LANDSCAPE)){ currentHeight=width; loadImage(); }if(newConfig.equals(Configuration.ORIENTATION_PORTRAIT)){ currentHeight=height; loadImage(); } } //call this function and it will place the image at the center public void load and center the image on screen(){ mWebView=(WebView)findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.setBackgroundColor(0); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); height = displaymetrics.heightPixels; width = displaymetrics.widthPixels; currentHeight=height //assuming that the phone //is held in portrait mode initially loadImage(); } public void loadImage(){ Bitmap BitmapOfMyImage=BitmapFactory.decodeResource(Environment.getExternalStorgeDirectory().getAbsolutePath()+"yourFolder/myImageName.jpg"); mWebView.loadDataWithBaseURL("file:///"+Environment.getExternalStorgeDirectory().getAbsolutePath() +"yourFolder/","<html><center> <img src=\"myImageName.jpg\" vspace=" +(currentHeight/2-(BitmapOfMyImage.getHeight()/2))+"> </html>","text/html","utf-8",""); //This loads the image at the center of thee screen } 

Я использовал центральную метку для центрирования изображения по вертикали, а затем использовал тег vspace, чтобы получить верхний край изображения. Теперь маржа рассчитывается по: screenVierticalHeight / 2-ImageVerticalHeight / 2

Надеюсь это поможет

Я сделал это с помощью комбинации xml и кода. У меня есть файл gif, хранящийся в папке с ресурсами.

 <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/webView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" /> </RelativeLayout> @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); WebView webView = (WebView) findViewById(R.id.webView); webView.setWebViewClient(new WebViewController()); webView.loadDataWithBaseURL("file:///android_asset/","<html><center><img src=\"animation.gif\"></html>","text/html","utf-8",""); } private class WebViewController extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 
  mWebView.loadDataWithBaseURL("file:///"+Environment.getExternalStorgeDirectory().getAbsolutePath()+"yourFolder/","<html><center><img src=\"myImage.jpg\"></html>","text/html","utf-8",""); 

Это помещает изображение из SDCard в центр webView. надеюсь, это поможет

Попробуйте загрузить файл HTML, в который встроено изображение. Все макеты могут выполняться со стандартными стилями CSS.

У меня была такая же проблема – центрирование по вертикали в webview. Это решение работает большую часть времени … возможно, это может помочь вам немного

  int pheight = picture.getHeight(); int vheight = view.getHeight(); float ratio = (float) vheight / (float) pheight; System.out.println("pheight: " + pheight + "px"); System.out.println("vheight: " + vheight + "px"); System.out.println("ratio: " + ratio + "px"); if (ratio > 0.5) { return; } int diff = pheight - vheight; int diff2 = (int) ((diff * ratio) / 4); if (pheight > vheight) { // scroll to middle of webview currentPhotoWebview.scrollTo(0, diff2); System.out.println("scrolling webview by " + diff2 + "px"); } 

Я знаю, что этот ответ немного запоздал, но вот вариант без javascript:

Вы можете расширить WebView и использовать защищенные методы computeHorizontalScrollRange() и computeVerticalScrollRange() чтобы получить представление о максимальном диапазоне прокрутки и на основе этого рассчитывать, где вы хотите scrollTo с помощью computeHorizontalScrollRange()/2 - getWidth()/2 and аналогично для computeVerticalScrollRange()/2 - getHeight()/2 : computeVerticalScrollRange()/2 - getHeight()/2

Мой единственный совет – убедиться, что загрузка завершена до этого, я не проверял, работает ли это во время загрузки, но я не думаю, что это будет так, что веб-просмотр еще не будет правильно установлен диапазон прокрутки ( Поскольку контент все еще загружается)

См. Веб- просмотр Android: обнаружение прокрутки, где я получил большую часть своей информации.

Для меня это работа:

 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "PICTURE FILE NAME"; File file = new File(path); String html = "<style>img{height: 100%;max-width: 100%;}</style> <html><head></head><body><center><img src=\"" + imagePath + "\"></center></body></html>"; webView.getSettings().setDefaultZoom(ZoomDensity.FAR); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webView.loadDataWithBaseURL( "" , html, "text/html", "UTF-8", ""); 
 String html = "<html><head><style type='text/css'>html,body {margin: 0;padding: 0;width: 100%;height: 100%;}html {display: table;}body {display: table-cell;vertical-align: middle;text-align: center;}</style></head><body><p style=\"color:white\">+"you message"+</p></body></html>"; 

WebView.loadData (html, "text / html; charset = UTF-8", null);

Таким образом, это загрузит ваш веб-просмотр с текстом в центре