HarmonyOS 鸿蒙Next 如何解决Web组件渲染富文本长图展示不全的问题
【问题现象】
Web组件渲染富文本长图时展示不全,图片的一部分被遮挡。如下图所示:
【背景知识】
webview长图渲染,涉及到Web组件嵌套滚动功能。
【解决方案】
Web组件需要设置高度属性,且需要针对场景选择正确的滑动策略。
1. NestedScrollMode.SELF_FIRST****滑动策略
自身先滚动,自身滚动到边缘以后父组件滚动。父组件滚动到边缘以后,如果父组件有边缘效果,则父组件触发边缘效果,否则子组件触发边缘效果。
2. NestedScrollMode.PARENT_FIRST****滑动策略
父组件先滚动,父组件滚动到边缘以后自身滚动。自身滚动到边缘后,如果有边缘效果,会触发自身的边缘效果,否则触发父组件的边缘效果。
代码示例如下:
import { webview } from '@kit.ArkWeb';
@Component
export struct ProWebWidget {
private controller: webview.WebviewController = new webview.WebviewController();
@State msg: string =
`<html><HEAD><style>a {word-wrap: break-word; overflow-wrap: break-word;} video{max-width:100%;width:100% !important;height:auto !important;min-height:10px;} img{max-width:100%;width:100% !important;height:auto !important;min-height:10px;} p{margin-top:0 !important;margin-bottom:0 !important;}</style></HEAD><body><p></p><div class="media-wrap image-wrap"><img style="width:100%;height:auto;margin:0 auto;overflow:visible;display:block;object-fit:cover" class="media-wrap image-wrap" src="https://malloss.gree.com/gree-mall-v2/20240529/819cf0eb5a7c465b9c2105a3b7c9d67b.jpg.webp"/></div><p></p></body></html>`;
build() {
Column() {
Web({ src: '', controller: this.controller })
.onControllerAttached(()=>{
this.controller.loadData(this.msg, 'text/html',"UTF-8",'about:blank','about:blank')
})
.width('100%')
.height('100%') // 需要配置height属性
.zoomAccess(false)
.onClick((event: ClickEvent) => { })
.nestedScroll({
scrollForward: NestedScrollMode.SELF_FIRST, // 需要配置滚动模式为NestedScrollMode.SELF_FIRST
scrollBackward: NestedScrollMode.SELF_FIRST // 需要配置滚动模式为NestedScrollMode.SELF_FIRST
})
.layoutMode(WebLayoutMode.FIT_CONTENT)
}
}
}
1 回复
针对HarmonyOS鸿蒙Next中Web组件渲染富文本长图展示不全的问题,可以尝试以下解决方案:
- 检查布局设置:确保Web组件的布局设置正确,避免由于布局问题导致内容展示不全。特别是注意高度和宽度的设置,确保能够容纳富文本长图的内容。
- 优化富文本内容:检查富文本内容,确保图片大小适中,避免过大或过小的图片影响展示效果。同时,优化HTML代码,确保结构清晰,减少不必要的嵌套和冗余代码。
- 使用ScrollView:如果富文本内容较长,可以考虑使用ScrollView组件来支持滚动查看。通过设置ScrollView的属性,确保用户能够滚动查看完整的富文本内容。
- 更新系统和组件:确保HarmonyOS系统以及Web组件已更新到最新版本,以避免由于版本不兼容导致的问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。