最近遇到一个问题,需要在2dx中显示一大篇文章,在win32下显示很正常,包括空格段落和下划线,但是到了android下就出了问题了,研究了好久终于解决了。
这里读取的是数据库中的text,在word中设置了一些格式,用于解析,如下图
word中tab识别不出来,所以我加了“yy”用于解析,代表空格
下面直接看代码吧
CCLayer* layer = CCLayer::create();
//===============================
vector<std::string> str = Tools::split(content,"yy");//此方法仅仅是依据“yy”截取字符串,content就是读取数据库的返回值string
string pr = "";
for (int i=0;i<str.size();i++)
{
//pr += "____" + str[i];//用蔡蔡的a2u试试
//=======此处引号中空格为英文状态全角字符下的空格=======
pr += Tools::a2u(" ") + str[i];
}
//=============word===============
CCLabelTTF* label_comment = CCLabelTTF::create(pr.c_str(), "Arial", 22);
label_comment->setColor(ccc3(99,99,99));
label_comment->setHorizontalAlignment(kCCTextAlignmentLeft);
label_comment->setAnchorPoint(CCPointZero);
label_comment->setDimensions(CCSizeMake(555,0));
layer->addChild(label_comment);
//========此处为下划线,根据读取字符进行判断,需要自己稍微调整一下=======================
int i_label = label_comment->getContentSize().width/22;
int j_label = label_comment->getContentSize().height/22;
string s_comment_00 = "";
string tmp(i_label*2+5,'_');
for (int i=0;i<j_label;i++)
{
s_comment_00 +=" " + tmp;
}
CCLabelTTF* label_comment_00 = CCLabelTTF::create( s_comment_00.c_str(),"Arial", 22);
label_comment_00->setColor(ccc3(191,134,107));
label_comment_00->setHorizontalAlignment(kCCTextAlignmentLeft);
label_comment_00->setAnchorPoint(CCPointZero);
label_comment_00->setDimensions(label_comment->getContentSize());
//label_comment_00->setPosition(ccp(100,100));
layer->addChild(label_comment_00,2);
//==========================
layer->setContentSize(label_comment->getContentSize());
layer->setPosition(ccp(30,
//bgSizeHeight-100
630-label_comment->getContentSize().height));
//=============scrollview=================
CCScrollView* comment_scrollView = CCScrollView::create();
comment_scrollView->setContainer(layer);
comment_scrollView->setPosition(ccp(0,20));
comment_scrollView->setViewSize(CCSizeMake(555+30,630));
CCLog("bgSizeHeight++++++++%f",bgSizeHeight-100);
comment_scrollView->setContentSize(CCSizeMake(layer->getContentSize().width+30,layer->getContentSize().height));
comment_scrollView->setDirection(kCCScrollViewDirectionVertical);
comment_scrollView->setDelegate(this);
bg->addChild(comment_scrollView);
下面贴出效果图