我试图显示一个WebView,并在WebView下面显示一个TextView小部件。WebView包含普通HTML。
当我试图滚动WebView时,我看不到TextView。
image from layout inspector and avd
它显示TextView被隐藏在一个黑条下面。
下面是MainActivity的代码:
package com.example.webviewtest
import android.annotation.SuppressLint
import android.os.Bundle
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
class MainActivity: AppCompatActivity() {
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val webView = findViewById<WebView>(R.id.wbvTextParagraph)
webView.webViewClient = WebViewClient()
webView.loadUrl("file:///android_asset/text-web.html")
webView.settings.javaScriptEnabled = true
webView.settings.setSupportZoom(true)
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">
<WebView
android:id="@+id/wbvTextParagraph"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tvSample"
app:layout_constraintEnd_toEndOf="@+id/wbvTextParagraph"
app:layout_constraintStart_toStartOf="@+id/wbvTextParagraph"
app:layout_constraintTop_toBottomOf="@+id/wbvTextParagraph" />
</androidx.constraintlayout.widget.ConstraintLayout>
text-web.html文件:
<!DOCTYPE html>
<html>
<body>
<p>test only</p>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque
laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas
sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione
voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum
exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse
quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
pariatur?</p>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque
laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas
sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione
voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum
exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse
quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
pariatur?</p>
</body>
</html>
我尝试添加TextView边距和填充,它没有工作。如果我删除第二个
标签,我可以看到TextView,但我不希望这样。请帮帮我
2条答案
按热度按时间ao218c7q1#
您可以尝试以下步骤垂直对齐WebView和TextView:
1.将WebView的高度设置为“0dp”,并通过将“android:layout_height”属性从“wrap_content”更改为“0dp”,将其垂直权重设置为“1”。
1.将WebView的“app:layout_constraintBottom_toTopOf”属性设置为TextView的ID,以便WebView将位于TextView之上。
1.将TextView的“app:layout_constraintBottom_toBottomOf”属性设置为WebView的ID,以便TextView将与WebView的底部对齐。
这将使WebView和TextView垂直对齐,WebView的高度将自动调整以填充剩余空间。
jk9hmnmh2#
您的
WebView
的高度是wrap_content
,因此它将显示您放入其中的所有文本所需的高度-在您的示例中,这意味着它将填满屏幕。因为你的
TextView
被限制在它的底部,它基本上被推离了屏幕。你所说的“黑条”是当你启用了“手势导航”时的导航条--你所需要担心的就是你的TextView
在你的应用程序的显示区域之外。您需要设置约束,以便所有固定元素都位于需要的位置,然后可以约束
WebView
等元素以适应剩余的空间。因此,您需要将TextView
的底部约束到parent
的底部,以便将其固定到屏幕底部。(这就是它的位置的重要之处-您根本不需要将 it 约束到WebView
。一旦你准备好了,你就可以把你的
WebView
限制在那些固定的视图上,让它使用它们之间的任何空间。所以WebView
的 top 需要被约束到parent
的顶部,而它的 bottom 需要被约束到TextView
的 top。这样,你就把它固定在这些固定的元素之间。然后如果你把它的高度设为0dp
,它的大小就会适合这个空间。