Как заставить WebView внутри ConstraintView уважать границы? - PullRequest
1 голос
/ 16 марта 2019

У меня есть следующий макет. В основном, верхний и нижний текстовые представления с веб-просмотром между ними, чтобы заполнить оставшееся пространство.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignWithParentIfMissing="true">

    <android.support.constraint.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_end="24dp"/>

    <android.support.constraint.Guideline
        android:id="@+id/guideline1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="24dp"/>

    <TextView
        android:id="@+id/heading"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/heading"
        android:textSize="20dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="@id/guideline1"
        app:layout_constraintEnd_toEndOf="@id/guideline2"/>

    <TextView
        android:id="@+id/disclaimer"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/disclaimer"
        android:textSize="14sp"
        app:layout_constraintStart_toStartOf="@+id/guideline1"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintBottom_toBottomOf="parent"/>


    <WebView
        android:id="@+id/webview"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="@id/guideline1"
        app:layout_constraintEnd_toStartOf="@id/guideline2"
        app:layout_constraintTop_toBottomOf="@id/heading"
        app:layout_constraintBottom_toTopOf="@id/disclaimer"/>
</android.support.constraint.ConstraintLayout>

Чтобы загрузить URL, который я делаю,

    webView = (WebView) findViewById(R.id.webview);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(true);

    WebSettings webViewSettings = webView.getSettings();
    webViewSettings.setJavaScriptEnabled(true);
    webViewSettings.setUseWideViewPort(true);
    webViewSettings.setBuiltInZoomControls(true);
    webViewSettings.setLoadWithOverviewMode(true);
    webViewSettings.setDomStorageEnabled(true);
    if (Build.VERSION.SDK_INT >= 11) {
        webViewSettings.setDisplayZoomControls(false);
    }
    webView.loadUrl("http://www.icons101.com/icons/21/Circle_by_Martz90/128/games.png");

Я ожидал, что веб-просмотр расширится, чтобы заполнить весь экран, даже если контент небольшой, но это то, что я получаю

enter image description here

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

1 Ответ

1 голос
/ 16 марта 2019

Вы можете использовать этот макет:

<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">



<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_end="24dp"/>

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_begin="24dp"/>

<TextView
    android:id="@+id/heading"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="heading"
    android:textSize="20dp"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintStart_toStartOf="@id/guideline1"
    app:layout_constraintEnd_toEndOf="@id/guideline2"/>

<TextView
    android:id="@+id/disclaimer"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="disclaimer"
    android:textSize="14sp"
    app:layout_constraintStart_toStartOf="@+id/guideline1"
    app:layout_constraintEnd_toStartOf="@+id/guideline2"
    app:layout_constraintBottom_toBottomOf="parent"/>


<WebView
    android:id="@+id/webview"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="@id/disclaimer"
    app:layout_constraintEnd_toStartOf="@id/guideline2"
    app:layout_constraintStart_toStartOf="@id/guideline1"
    app:layout_constraintTop_toBottomOf="@id/heading" />

Ваш код был действительно почти на 100% хорош, но ваш веб-просмотр был центрирован по центру экранапоэтому я ограничиваю его границы, и теперь он займет все оставшееся пространство.

...