Как подогнать веб-изображения под размер экрана Android в WebView? при получении контента сайта с использованием данных JSON, используя restful - PullRequest
0 голосов
/ 10 января 2019

Я получаю данные Json, используя Rest API. И показывает содержимое только в WebView, но эти веб-изображения отображаются в полном размере. Я хочу, чтобы изображения соответствовали размеру экрана.

Ниже мой код:

    content = (WebView)findViewById(R.id.content);
    final WebViewLoader webViewLoader = new WebViewLoader(content);
    webViewLoader.setWebSettings();

    String url = Const.get_content_by_id.replace("POST_ID",String.valueOf(id));

    StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String s) {
            try {
                JSONObject ParentObject = new JSONObject(s);
                webViewLoader.setLoadDataWithBaseUrl(ParentObject.getJSONObject("content").getString("rendered"));

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {

            Toast.makeText(Post.this,"Unable to Load", Toast.LENGTH_LONG).show();
        }
    });

SingletonVolley.getInstance(getApplicationContext()).addToRequestQueue(request);

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я наконец-то решил эту проблему, установив тег style с веб-контентом.

webViewLoader.setLoadDataWithBaseUrl("<style>img{display: inline;height: auto;max-width: 100%</style>"+ParentObject.getJSONObject("content").getString("rendered"));

Если кто-то хочет добавить еще стиль, просто добавьте <style></style> после или до <style>img{display: inline;height: auto;max-width: 100%</style>

0 голосов
/ 10 января 2019

Используйте библиотеку рендеринга и кэширования изображений Picasso и используйте ее метод для настройки изображений.

 ImageView img = findViewById(R.id.image);
        Picasso.with(ctx)
                .load(res)
                .placeholder(R.drawable.loading)
                .error(R.mipmap.ic_launcher)
                .resize(Main_page.getScreenWidth(ctx),Main_page.getScreenHeight(ctx))
                .centerInside()
                .into(img);

Также получите ширину экрана и высоту экрана, чтобы изменить размер изображения до размера экрана, а затем используйте centerInside (), чтобы изображение вошло в веб-представление.

Вы можете получить ширину и высоту экрана следующим образом.

    public static  int getScreenWidth(Context c) {
      WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE);
      Display display = null;
      if (wm != null) {
        display = wm.getDefaultDisplay();
      }
      Point size = new Point();
      if (display != null) {
        display.getSize(size);
      }
      return size.x;
    }
    public static  int getScreenHeight(Context c) {
      WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE);
      Display display = null;
      if (wm != null) {
        display = wm.getDefaultDisplay();
      }
      Point size = new Point();
      if (display != null) {
        display.getSize(size);
      }
      return size.y;
   }

Для просмотра в Интернете используйте код:

   WebView img = findViewById(R.id.image);
        img.getSettings().setBuiltInZoomControls(true);
        img.getSettings().setLoadWithOverviewMode(true);
        img.getSettings().setUseWideViewPort(true);
        img.loadUrl(res);
    } else {
        setContentView(R.layout.zoominwithoutnet);
        getWindow()
                .setLayout(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.MATCH_PARENT
                );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...