做一个项目,遇到这个该死的问题,尝试了几乎所有解决方法,几近崩溃,终于找到完美解决方案。因为在网上,无论中文还是英文,搜索了无数遍,都没人给出正确答案,所以,在此记下,但愿能帮到跟我一样遇到这个问题的人们。
1,TextField + UIScrollBar方法:
该方法对于普通的HTML没有问题,对于文本就足以显示滚动条的情况,也没有问题,但如果你像我一样,只有一句话介绍,加一个图片,你就会发现,怎么样也无法显示滚动条。图片被切掉一半,原因是Htmltext中的img图片是后载入的,也就是说,你加上scrollbar时,textfield的高度根本不足以显示滚动条。为了解决这个问题,我甚至试过用getimagerefrence方法监听img图片的载入事件,然后重新用uiscrollbar.update来重绘滚动条。但是,很遗憾,理论上行得通的办法,实际上,是没有用的。
2,直接用textarea
textarea实际上就是上面的组合。结果不用说啦,还是没法解决。
3,终极方案:Textfield+ScrollPane
最终的解决方法,是建一个textfield,将其multiline和wordwrap设为true,再将其width设置好,将autosize设置成left,将scrollpane的source指向该textfield。最终,问题终于正常解决。注意:multiline一定要设置成true,不然,你的所有段落都会合并成一段的,这个小故事让我卡了半天才反应过来。下面是我的一小段实现这个功能的AS3代码。

var t_content:TextField=new TextField();
t_content.x=0;
t_content.y=0;
t_content.multiline=true;
t_content.border=true;
t_content.styleSheet=ContentStyle;
t_content.width=box.width;
t_content.autoSize="left";
t_content.condenseWhite=true;
t_content.wordWrap=true;
t_content.htmlText=p_content;
box.addChild(t_content);
var aSp:ScrollPane = new ScrollPane();
box.addChild(aSp);
aSp.source = t_content;
aSp.horizontalScrollPolicy=ScrollPolicy.OFF;
aSp.setSize(t_content.width, 340);
t_content.x=0;
t_content.y=0;
t_content.multiline=true;
t_content.border=true;
t_content.styleSheet=ContentStyle;
t_content.width=box.width;
t_content.autoSize="left";
t_content.condenseWhite=true;
t_content.wordWrap=true;
t_content.htmlText=p_content;
box.addChild(t_content);
var aSp:ScrollPane = new ScrollPane();
box.addChild(aSp);
aSp.source = t_content;
aSp.horizontalScrollPolicy=ScrollPolicy.OFF;
aSp.setSize(t_content.width, 340);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架