做一个项目,遇到这个该死的问题,尝试了几乎所有解决方法,几近崩溃,终于找到完美解决方案。因为在网上,无论中文还是英文,搜索了无数遍,都没人给出正确答案,所以,在此记下,但愿能帮到跟我一样遇到这个问题的人们。

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);