首页 > 解决方案 > 如何避免 Kotlin 的 WebView 显示空格?

问题描述

长话短说,我尝试使用约束、线性和相对布局来查看是否存在问题,并调整了 activity_main.xml 上的填充、边距、对齐甚至重心,它已经看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
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"
tools:context=".MainActivity">

<WebView
    android:id="@+id/visorweb"
    style="@android:style/Widget.WebView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_gravity="center|fill|fill_horizontal"
    android:layout_margin="0dp"
    android:layout_marginStart="0dp"
    android:layout_marginLeft="0dp"
    android:layout_marginTop="0dp"
    android:layout_marginEnd="0dp"
    android:layout_marginRight="0dp"
    android:layout_marginBottom="0dp"
    android:padding="0dp"
    android:paddingStart="0dp"
    android:paddingLeft="0dp"
    android:paddingTop="0dp"
    android:paddingEnd="0dp"
    android:paddingRight="0dp"
    android:paddingBottom="0dp" />
    </LinearLayout>

这些都不起作用。对于 WebView,我的 Main Activity 看起来也很标准,但我会展示它以防你想看:

  package com.boliviachan.test9

import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.KeyEvent
import android.webkit.WebView
import android.webkit.WebViewClient

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val myWebView: WebView = findViewById(R.id.visorweb)
        myWebView.loadUrl("https://www.boliviachan.org")
        myWebView.settings.javaScriptEnabled = true
        myWebView.webViewClient = WebViewClient()

        class MyWebViewClient : WebViewClient() {

            override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
                if (Uri.parse(url).host == "https://www.boliviachan.org") {
                    //Esencialmente todo lo que esté bajo el host "boliviachan.org" debería cargarse dentro de la app
                    return false
                }
                // En caso de que se abra un link externo, debe cargarse en el navegador de preferencia del usuario
                Intent(Intent.ACTION_VIEW, Uri.parse(url)).apply {
                    startActivity(this)
                }
                return true
            }

        }
        fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
            // Chequea si hay historial de navegación previo y deja que el usuario vuelva hacia atrás
            if (keyCode == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) {
                myWebView.goBack()
                return true
            }
            // Si no hay historial, simplemente usará cualquier función que tuviera el botón atrás por defecto
            // Como por ejemplo, cerrar la app
            return super.onKeyDown(keyCode, event)
        }

    }
}

当我在任何移动浏览器上加载该网站时,它工作得很好,但是在这个 WebView 中,它的左右两侧都是白色的,除非出现一个弹出窗口并且它实际上填满了屏幕的两侧。我能做些什么?

标签: androidkotlinwebview

解决方案


推荐阅读