l***@wenergy.com.cn
l***@wenergy.com.cn
  • 发布:2026-07-10 15:52
  • 更新:2026-07-10 15:52
  • 阅读:43

我想在一个UniApp app端页面,一半页面显示uniapp 页面,一半页面用安卓原生webview。要使用什么技术才能实现

分类:uni-app

我想在一个UniApp app端页面,一半页面显示uniapp 页面,一半页面用安卓原生webview。要使用什么技术才能实现。

2026-07-10 15:52 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

要实现一半页面显示 uniapp 页面、一半页面用安卓原生 webview,可以使用 plus.webview.create 动态创建子 webview,并将其 append 到当前 uniapp 页面的 webview 中。

具体实现思路如下:

在 uniapp 的 vue 页面(非 nvue)中,通过 plus.webview.create 创建一个新的 webview 实例,设置其位置和大小(例如占据页面下半部分),然后使用 this.$scope.$getAppWebview() 获取当前页面的 webview 对象,并通过 append 方法将新创建的 webview 添加为子视图。

参考代码示例:

<template>  
  <view class="uni-content">  
    <!-- 这里是上半部分的 uniapp 页面内容 -->  
    <view class="uni-half">  
      <text>这是 uniapp 页面内容</text>  
    </view>  
    <!-- 下半部分留给原生 webview,不需要在这里写 web-view 组件 -->  
  </view>  
</template>  

<script>  
export default {  
  data() {  
    return {  
      wv: null  
    }  
  },  
  onReady() {  
    // #ifdef APP-PLUS  
    // 动态创建原生 webview  
    this.wv = plus.webview.create("", "custom-webview", {  
      plusrequire: "none", // 禁止远程网页使用 plus 的 api  
      'uni-app': 'none', // 不加载 uni-app 渲染层框架,避免样式冲突  
      top: '50%', // 设置 webview 距离顶部的距离,这里占据下半部分  
      height: '50%', // 设置 webview 的高度为屏幕的一半  
      left: '0',  
      width: '100%'  
    })  
    // 加载目标网址  
    this.wv.loadURL("https://www.example.com")  
    // 获取当前页面的 webview 对象  
    var currentWebview = this.$scope.$getAppWebview()  
    // 将新创建的 webview 追加到当前页面  
    currentWebview.append(this.wv)  
    // #endif  
  },  
  onUnload() {  
    // 页面卸载时关闭 webview,避免内存泄漏  
    if (this.wv) {  
      this.wv.close()  
    }  
  }  
}  
</script>  

<style>  
.uni-content {  
  flex: 1;  
}  
.uni-half {  
  height: 50%;  
  background-color: #fff;  
  display: flex;  
  align-items: center;  
  justify-content: center;  
}  
</style>

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

需要注意以下几点:

  • 此方法仅支持 app-vue 页面,不支持 nvue 页面。
  • 动态创建的 webview 会覆盖在 uniapp 页面上方,所以需要合理设置 uniapp 页面上半部分的高度,避免被 webview 遮挡。
  • 页面卸载时记得关闭动态创建的 webview,防止内存泄漏。
  • 如果需要在 uniapp 页面和原生 webview 之间进行通信,可以参考 uni.webview.js 以及 web-view 组件的通信文档。
内容为 AI 生成,仅供参考

要回复问题请先登录注册