Как добавить дополнение к 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>
Ответы
Ответ 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
Использование пробела здесь не оборачивается.
для этой цели используется прокладка для макета.
Итак, ваш "обходной путь" - это то, что вы должны были сделать.