Масштабировать изображения WebView только для соответствия экрану Android

У меня есть представление с ImageView, TextView и WebView. Просмотр xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/article_details_image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/article_details_title_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/article_details_image_view"
        android:layout_margin="5dp" />

    <TextView
        android:id="@+id/article_details_author_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/article_details_title_text_view"
        android:layout_margin="5dp" />

    <TextView
        android:id="@+id/article_details_date_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/article_details_author_text_view"
        android:layout_margin="5dp" />

    <WebView
        android:id="@+id/article_details_body_text_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/article_details_date_text_view"
        android:layout_margin="5dp" />
</RelativeLayout>

WebView gets html body from string that I get from blog. It shows text fine but images is too big and I can scroll WebView horizontaly. I've tried to use:

webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);    

Но ничего не происходит, и я пробовал:

WebView browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setLoadWithOverviewMode(true);
browser.getSettings().setUseWideViewPort(true);    

Он масштабирует изображения из HTML до идеального размера, но также масштабирует текст, и размер текста становится очень маленьким. Как мне получить тот же размер текста, но масштабированные изображения?

Как это выглядит в приложении:

http://i.stack.imgur.com/h0yv2.jpg

Как это выглядит в HTML:

http://i.stack.imgur.com/oFVkE.jpg


person Roo    schedule 08.12.2014    source источник
comment
вам нужно добавить стиль в ваш html, например img{display: inline; height: auto; max-width: 100%;}   -  person orium    schedule 08.12.2014
comment
Я использовал ваш пример и установил максимальную ширину для ширины экрана устройства, и это сработало. Спасибо.   -  person Roo    schedule 08.12.2014


Ответы (1)


Я помогу вам решить эту проблему частично. Слышали ли вы о WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING, который представлен в Android API уровня 19. Это решит вашу проблему с текстом и изображениями в веб-просмотре. Для Android версии 4.4 и выше работает нормально.

webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.TEXT_AUTOSIZING); 

Для версий ниже я еще не нашел идеального решения. Пожалуйста, проверьте ниже обсуждение.

WebView: WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING: ниже Andoird 4.4?

Также вы можете использовать метод webSettings.setDefaultFontSize((int)fontSize); для управления размером текста в веб-просмотре. Надеюсь, что это поможет вам.

person Ganesh AB    schedule 08.12.2014
comment
Это ничего не изменило. Нужно ли мне менять XML? - person Roo; 08.12.2014
comment
Roo, я обновил свой ответ, попробуйте также метод webSettings.setDefaultFontSize((int)fontSize). - person Ganesh AB; 08.12.2014