uni-app subNvue 安卓不能动态修改样式 IOS可以动态修改

uni-app subNvue 安卓不能动态修改样式 IOS可以动态修改

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
### 操作步骤:
input输入框  获取焦点时  根据软键盘的高度 input显示在软键盘上边   因为页面有视频组件所以使用subNvue

### 预期结果:
IOS和安卓都需要生效

### 实际结果:
IOS生效  安卓不生效

### bug描述:
subNvue页面  动态修改subNvue的样式安卓手机不生效  IOS生效。  subNvue  input  获取焦点时修改subNvue的样式  IOS可以动态修改   安卓没有反应  反而subNvue消失了

![image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20210823/452097944ed662630c6389adcd804727.png)

更多关于uni-app subNvue 安卓不能动态修改样式 IOS可以动态修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

经测试,都是可以动态设置style的,使用的HBuilder X alpha 3.2.6

更多关于uni-app subNvue 安卓不能动态修改样式 IOS可以动态修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,subNvue 作为原生子窗体的实现机制在 Android 和 iOS 上确实存在差异,这可能导致动态样式修改在不同平台表现不一致。根据你的描述,问题主要出现在 Android 平台上动态修改 subNvue 样式时失效,甚至导致 subNvue 消失。以下是一些可能的原因和解决方案:

  1. 平台差异:subNvue 在 Android 上基于原生 Webview 或原生组件实现,而 iOS 上可能更灵活。Android 上动态修改样式时,可能需要触发重新渲染或使用特定的 API 方法。建议检查 Android 上 subNvue 的样式更新是否需要在主线程中执行,或者是否涉及异步操作。

  2. 样式更新方式:在 Android 上,尝试使用 plus.webview.currentWebview() 获取当前 subNvue 的 Webview 对象,然后通过 setStyle 方法动态更新样式。例如:

    var subNvue = plus.webview.currentWebview();
    subNvue.setStyle({ top: '新高度' });
    

    确保样式属性(如 topheight)使用字符串格式,并检查是否在正确的时机(如软键盘弹出事件)调用。

  3. 软键盘事件处理:Android 上软键盘弹出时,可能会影响页面布局,导致 subNvue 位置计算错误。建议监听 resize 事件或使用 plus.keyboard 获取软键盘高度,并动态调整 subNvue 样式。示例:

    plus.keyboard.show(); // 触发软键盘
    window.addEventListener('resize', function() {
        // 根据窗口高度调整 subNvue
    });
回到顶部