在ConstraintLayout内,我有一个webview,其layout_height和layout_width设置为wrap_content,并且有许多约束将webview保持在中心,纵横比为9:16,最大高度为720dp。问题在于,webview似乎无法填充分配给它的整个屏幕尺寸,在底部保留了剩余空间。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_telcel_landing_tablet"
android:gravity="center">
<ProgressBar
android:id="@+id/progressBarWeb"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="gone" />
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webContent"
android:background="?attr/image_background_landing"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_constrainedHeight="true"
app:layout_constrainedWidth="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintHeight_max="720dp"
app:layout_constraintDimensionRatio="9:16"
android:visibility="visible"
android:hardwareAccelerated="false"/>
</android.support.constraint.ConstraintLayout>
</FrameLayout>
如果我对Web视图使用固定的高度和宽度,它将使用所有可用空间,但是会引起其他类型的问题,例如在景观的顶部和底部被切断。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_telcel_landing_tablet"
android:gravity="center">
<ProgressBar
android:id="@+id/progressBarWeb"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="gone" />
<WebView
android:id="@+id/webContent"
android:background="?attr/image_background_landing"
android:visibility="visible"
android:layout_width="405dp"
android:layout_height="720dp"
android:hardwareAccelerated="false"
android:layout_gravity="center_vertical|center_horizontal"/>
</FrameLayout>
我一直在尝试所有建议的解决方案,但没有一个起作用。
webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webview.setInitialScale(1);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setUseWideViewPort(true);
答案 0 :(得分:0)
仅更改webview的宽度和高度,如下所示。您正在提供wrap_content。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ProgressBar
android:id="@+id/progressBarWeb"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|center_horizontal" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webContent"
android:layout_height="0dp"
android:layout_width="0dp"
app:layout_constrainedHeight="true"
app:layout_constrainedWidth="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="720dp"
app:layout_constraintDimensionRatio="9:16"
android:visibility="visible"
android:hardwareAccelerated="false"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>