android - 如何使 ConstraintView 中的 WebView 尊重边界?
问题描述
我有以下布局。基本上,顶部和底部文本视图之间带有 webview 以填充剩余空间。
<?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>
要加载我正在做的网址,
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");
即使内容很小,我也希望 webview 能够扩展以填满整个屏幕,但这就是我得到的
如何将“免责声明”修复到父级底部并让 webview 填充剩余的空白?
解决方案
您可以使用此布局:
<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% 好,但是您的 webView 以屏幕中心为中心,因此我将其限制在其范围内,现在它将占用所有剩余空间。
推荐阅读
- r - R中的for循环有很多值
- google-cloud-platform - 在 GCP API 指标页面上访问、查看和修改过滤器的 IAM 权限
- github - 将所有 github repo 备份到 bitbucket
- javascript - thenable 函数。应用了不同的返回类型 on call 或 `await` /`then`
- asp.net-core - ASP.Net Identity SSO 多应用
- rstudio - 为什么 R studio 不读取 R 代码?
- google-cloud-platform - Terraform - 同时将多个文件复制到存储桶创建存储桶
- python - 在 pandas 的下游作业中通过 Athena 读取分区数据
- google-cloud-platform - 从触发器开始数据准备作业后运行 SQL 更新语句 - Google Cloud
- android-jetpack-compose - 如何在横向模式下预览 Compose 布局