我的项目是使用webview嵌套了一个uniapp打包出的h5
本来展示很正常,某天突然发现uniapp的底部导航被手机底部的导航栏挡住了,离奇,某天突然出现的
有些手机会设置展示底部导航按钮,有些手机会关闭底部导航
以下代码对这两种情况通用
package org.topsec.viewerimport android.os.Bundle
import android.util.Log
import android.webkit.WebView
import android.widget.FrameLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import kotlin.concurrent.thread
import android.view.View
// Singleton
class MainActivity : AppCompatActivity() {val spiceJNI = SpiceJNI(this)val spiceJSInterface = SpiceJSInterface(this)val spiceWebViewClient = SpiceWebViewClient(this)private lateinit var layoutView : Viewlateinit var webView: WebViewoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)WindowCompat.setDecorFitsSystemWindows(window, false)setContentView(R.layout.webview_layout)supportActionBar?.hide()webView = findViewById(R.id.web_view)val rootView = findViewById<FrameLayout>(R.id.root_frame)ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())Log.d("InsetsDebug", "Top system bar height: ${systemBarsInsets.top}px")Log.d("InsetsDebug", "Bottom system bar height: ${systemBarsInsets.bottom}px")// 为根布局设置所有方向的内边距view.updatePadding(left = systemBarsInsets.left,0,right = systemBarsInsets.right,bottom = systemBarsInsets.bottom)insets}// 其他WebView设置webView.settings.javaScriptEnabled = truewebView.webViewClient = spiceWebViewClientwebView.settings.supportZoom()webView.settings.loadWithOverviewMode = truewebView.settings.builtInZoomControls = truewebView.settings.displayZoomControls = truewebView.addJavascriptInterface(spiceJSInterface, "spiceInterface")webView.settings.domStorageEnabled = truewebView.settings.databaseEnabled = truewebView.loadUrl("file:///android_asset/web/index.html")}
}