为什么在Android中使用Kotlin的WebView时,我的TextView隐藏在黑条下面?

hpxqektj  于 2023-06-04  发布在  Android
关注(0)|答案(2)|浏览(294)

我试图显示一个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,但我不希望这样。请帮帮我

ao218c7q

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的高度将自动调整以填充剩余空间。

jk9hmnmh

jk9hmnmh2#

您的WebView的高度是wrap_content,因此它将显示您放入其中的所有文本所需的高度-在您的示例中,这意味着它将填满屏幕。
因为你的TextView被限制在它的底部,它基本上被推离了屏幕。你所说的“黑条”是当你启用了“手势导航”时的导航条--你所需要担心的就是你的TextView在你的应用程序的显示区域之外。
您需要设置约束,以便所有固定元素都位于需要的位置,然后可以约束WebView等元素以适应剩余的空间。因此,您需要将TextView的底部约束到parent的底部,以便将其固定到屏幕底部。(这就是它的位置的重要之处-您根本不需要将 it 约束到WebView
一旦你准备好了,你就可以把你的WebView限制在那些固定的视图上,让它使用它们之间的任何空间。所以WebViewtop 需要被约束到parent的顶部,而它的 bottom 需要被约束到TextViewtop。这样,你就把它固定在这些固定的元素之间。然后如果你把它的高度设为0dp,它的大小就会适合这个空间。

相关问题