Подтвердить что ты не робот

Удалить нежелательное белое пространство в WebView Android

Я начал разработку приложения с использованием WebView. На самом деле я загружаю изображение с Webview (мне нравится использовать встроенные элементы управления масштабом класса). Я могу успешно загрузить изображение, но вижу раздражающие пробелы. Я не могу найти способ удалить это. Мои изображения размером 750 * 1000. Я приложил свой код ниже.

webview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <WebView
        android:id="@+id/webView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

ImageViewer.java

package com.android.test;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class ImageViewer extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);

        String loadUrl = "file:///android_res/drawable/splash_001.jpg";

        WebView image = (WebView) findViewById(R.id.webView);
        image.clearView();
        image.clearCache(true);
        image.getSettings().setBuiltInZoomControls(true);
        image.getSettings().setSupportZoom(true);
        image.getSettings().setLoadWithOverviewMode(true);
        image.getSettings().setUseWideViewPort(true);
        image.loadUrl(loadUrl);
    }

}
4b9b3361

Ответ 1

По умолчанию веб-просмотр имеет несколько полей/отступов в теле. Если вы хотите удалить это дополнение/маржу, переопределите тег и добавьте margin, например:

<body style="margin: 0; padding: 0">

Ответ 2

Если пустое пространство, о котором вы говорите, находится с правой стороны, вы можете добавить это в веб-представление.

mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

Это должно заставить белое пространство уйти, если оно находится на правой стороне, где будет полоса прокрутки.

Ответ 3

По Defualt HTML веб-страницы имеют отступы и поле 10px; Вы должны установить в своей голове раздел или файл css:

<style type="text/css">
html, body {
width:100%;
height: 100%;
margin: 0px;
padding: 0px;
}
</style>

Это помогло мне.

Ответ 4

У меня было раздражающее белое пространство, граничащее с отображаемым HTML-контентом в моем WebView (в этом нет изображений в этом контенте). Сначала я подумал, что это связано с проблемами CSS, как упоминалось выше. Но, используя таблицу стилей, чтобы изменить фон для HTML, BODY и т.д., Он все больше и больше напоминал прокладки вокруг WebView.

user3241873 показывает выше, как настроить прописку на самом WebView, но я обнаружил, что когда приложение Android по умолчанию, созданное Eclipse, сгенерировало файл макета (RelativeLayout "контейнер", а не "LinearLayout" ), он добавил эти атрибуты в RelativeLayout:

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

Если вы посмотрите на эти значения заполнения в res/values ​​/dimens.xml, вы увидите, что они установлены на 16dp. Когда я изменился на 0dp, он удалил неприглядное пустое пространство:)

Если кто-то заменяет TextView по умолчанию (Hello World) TextView на WebView, отступы для родительского RelativeLayout склеиваются, как отвратительный родственник в доме.

Ответ 5

Используйте метод WebView setScrollBarStyle и укажите параметр как View.SCROLLBARS_INSIDE_OVERLAY.

Ответ 6

Это пример, который вы можете проверить, используя шаблон html, затем вы можете заменить текст "body" тем, что вы хотели бы... в вашем случае, html для изображения. Вы можете использовать css для создания html по мере необходимости. Надеюсь, это поможет вам понять, как использовать локальные активы. Если вам нужна дополнительная помощь, отправьте комментарий.

Одна ключевая строка для пропусков - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi" />

Используйте это как шаблон: (assets/template.html)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi" />
    <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
[CONTENT]
</body>
</html>

Используйте css следующим образом: (assets/style.css)

@font-face {
  font-family: Roboto;
  src: url(file:///android_asset/fonts/Roboto.ttf);
}

html, div {
    margin: 0;
    padding: 0;
}

body {
    font-family: Roboto;
    font-size: 1.0em;
    color: rgb(61,61,61);
    text-align: left;
    position:relative;
    padding: 40px;
    background-color: #eeeeee;
}

Затем в вашем классе WebView: (ваш класс, который расширяет WebView)

public void setText(CharSequence text, int color){

       try {

           InputStream is = getResources().getAssets().open("article_view.html");
           int size = is.available();
           byte[] buffer = new byte[size];
           is.read(buffer);
           is.close();

           loadDataWithBaseURL("file:///android_asset/",
               new String(buffer).replace("[CONTENT]", text.toString()),
               "text/html", "UTF-8", null);

       } catch (IOException e) {
           e.printStackTrace();
       }

}

Ответ 7

У меня было это [это мой activity.xml]

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

Я просто удалил прописку в relativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 
tools:context=".MainActivity">

Я попробовал все вышеперечисленные решения, но для меня это не очень понравилось. этот работал у меня.

Ответ 8

Я действительно не знаю, в каком пробеле вы ссылаетесь (возможно, у изображения есть отступы или около того), но обычно, если у вас есть какие-либо проблемы с макетом в WebView, вы попытаетесь исправить их, предоставив правильный (встроенный) css -stylesheet.

Ответ 9

Установите дополнение в вашем webview.xml на 0dp

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<WebView
    android:id="@+id/webView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp" />

Ответ 10

Я уже получил его.

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

здесь мой код

 ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webpage.getLayoutParams();
        p.height = webpage.getHeight();
        Log.e(" webpage.getHeight()", String.valueOf(webpage.getHeight()));
        webpage.setLayoutParams(p);

Надеюсь, что вы возьмете мой код и мой ответ:) работает на любых устройствах даже на вкладках тоже:)

Ответ 11

В моем случае верхняя часть моего веб-представления имеет большое дополнение. Итак, установите scrollbarSize = "0dp". В AS 2.2.3

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

<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:scrollbarSize="0dp"
/>