1、A页面通过Navigation组件 跳转到B页面 B页面中是一个web组件加载web页面
2、启动应用,第一次用户点击A页面中的某入口跳转到B页面 B页面展示web页面展示正常, B页面返回到A页面 再次进入B页面 web页面异常(页面顶部内容被遮挡 页面错乱)
@Entry
@Component
struct Login {
pageStack: NavPathStack = new NavPathStack()
build() {
Navigation(this.pageStack) {
Text('服务协议')
.onClick(() => {
this.pageStack.pushPath({ name: "webview" })
})
}.title('登录')
.hideTitleBar(true)
//WebView.ets
import { webview } from '@kit.ArkWeb'
// 跳转页面入口函数
@Builder
export function WebViewBuilder() {
WebView()
}
@Component
struct WebView {
webviewController: webview.WebviewController = new webview.WebviewController()
build() {
NavDestination() {
Column() {
Web({ src: 'www.huawei.com', controller: this.webviewController })
}
}
.title('服务协议')
}
}
route_map.json
{
"routerMap": [
{
"name": "webview",
"pageSourceFile": "src/main/ets/pages/WebView.ets",
"buildFunction": "WebViewBuilder"
}
]
}
需要给web设置一个具体的高度来解决,可以通过getRectangleById方法获取到整个NavDestination的高度,来动态设置web的高度。可以使用以下demo验证下: