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

Как добавить дополнение к WebView

Мой файл макета определяет WebView, под которым есть некоторые фиксированные кнопки высоты.

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

  <WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1.0"/>

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:padding="8dp">

    <Button
      android:text="Decline"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1.0">
    </Button>

    <Button
      android:text="Accept"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1.0">
    </Button>

  </LinearLayout>
</LinearLayout>

Я пытаюсь добавить дополнение к WebView, так как в настоящий момент текст работает прямо до края пользовательского интерфейса.

Я попытался добавить android:padding="8dp" в WebView, но никаких дополнений не было добавлено. Я также попробовал paddingLeft и paddingRight тоже, но они тоже не работали.

WebView API-документы подтверждают, что он наследует View, который поддерживает android:padding, поэтому я удивлен, что это не сработало.

Кто-нибудь знает, является ли это известной проблемой или каким-то взаимодействием с моим XML-макетом, который я не понимаю?

FYI, моим обходным путем было добавление дополнительного LinearLayout вокруг WebView и вместо этого добавление к нему:

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1.0"
    android:padding="8dp">

    <WebView
      android:id="@+id/webview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"/>

  </LinearLayout>
4b9b3361

Ответ 1

У WebView есть ошибка в реализации дополнения. Настройка прокладки на веб-просмотре не будет обрабатывать фактическую веб-страницу, но WILL пропустит полосы прокрутки. Он работает только частично, как и ожидалось. Ваше решение - лучший способ добиться "заполнения" для WebView.

Ответ 2

Другим обходным решением этой проблемы может быть использование javascript. Поэтому, когда ваша веб-страница загружена, вы можете сделать такой js-вызов для установки paddings:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        webView.loadUrl("javascript:document.body.style.margin=\"8%\"; void 0");
    }
});

Ответ 3

Просто попробуйте добавить этот CSS:

<body style='margin:X;padding:X;'>

Ответ 4

Альтернативным подходом было бы установить WebView внутри ScrollView

Затем вы можете добавить левое/правое поле в WebView и получить эффект заполнения. Однако прокрутка будет обрабатываться ScrollView.

<ScrollView style="@style/MatchMatch">

    <WebView
        android:id="@+id/my_web_view"
        android:layout_marginLeft="@dimen/webViewMargin"
        android:layout_marginRight="@dimen/webViewMargin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</ScrollView>

Это приведет к тому, что полоса прокрутки будет размещена вне WebView, которая является поведением, которое я хотел для своего приложения.

Ответ 5

Добавьте LinearLayout вокруг него с дополнением.

Ответ 6

Использование пробела здесь не оборачивается. для этой цели используется прокладка для макета.

Итак, ваш "обходной путь" - это то, что вы должны были сделать.