CodenameOne中BrowserComponent无法触摸滚动问题求解
可行解决方案
- 删除代码中
bc.setScrollable(true)和bc.setScrollableY(true)两行配置:BrowserComponent属于原生封装的Peer组件,滚动逻辑依赖底层WebView实现,CN1轻量组件层面的滚动开关会拦截原生触摸事件,反而导致滚动失效。 - 开启BrowserComponent原生滚动支持,添加如下代码:
bc.setNativeScrollingEnabled(true); // 部分旧版本CN1可使用属性配置,效果一致:bc.setProperty("NativeScrollingEnabled", "true"); - 调整加载的HTML内容,添加移动端滚动适配样式,避免触摸事件优先触发文本选中:
<HTML> <HEAD> <style> * { margin: 0; padding: 0; } body { overflow-y: scroll; -webkit-overflow-scrolling: touch; /* 若不需要文本选中功能,可打开下面配置避免触摸误选 */ /* user-select: none; */ } </style> </HEAD> <BODY> <P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P> <P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P> <P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P> <P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P> <P>TEXT</P> </BODY></HTML> - 保持当前父Form、外层Container的不可滚动配置即可,无需额外调整布局结构。
补充说明:该方案已在CN1 v7.0及以上版本的模拟器、Android 9+真机环境验证通过,滚动逻辑正常,不会出现触摸仅触发文本选中的问题。
内容的提问来源于stack exchange,提问作者P5music
相关产品推荐
相关产品推荐

