0
我有ui::Text
在ui::Layout
和根据内容,它溢出。我看着Label::setOverflow
和Label::setWrap
关闭ui::Text
的virtualRenderer
Label
,但我不明白的方式,使其滚动和包裹。如何在cocos2d-x中创建包装,可滚动的文本?
我怎样才能使一个滚动ui::Text
同时确保它的正确文本换行?
我有ui::Text
在ui::Layout
和根据内容,它溢出。我看着Label::setOverflow
和Label::setWrap
关闭ui::Text
的virtualRenderer
Label
,但我不明白的方式,使其滚动和包裹。如何在cocos2d-x中创建包装,可滚动的文本?
我怎样才能使一个滚动ui::Text
同时确保它的正确文本换行?
诀窍是,而不是使用ui::Scrollview
,使用一个ui::ListView
里面只有一个项目,ui::Text
。这使您可以滚动并动态调整容器大小,以便在更改ui::Text
的文本内容时使用。
的关键是a)所述ui::Text
的宽度设置为相同的大小作为其父ui::ListView
,高度为0和b)的列表视图随时上调用my_listview->requestDoLayout()
文本内容的变化,从而使滚动区反映了。
这里是你如何实现大段文字滚动到一个较小的一个例子ui::Panel
:
ui::ListView* listview = ListView::create();
my_scene->addChild(listview);
listview->setContentSize({300, 500}); //give it whatever size
ui::Text* text = ui::Text::create("[multiline content]", "fontName.ttf", 16);
text->setTextAreaSize({300, 0}); //use that same size, but use 0 height. This auto sets overflow and wrap in the backend
listview->addChild(text);
listview->requestDoLayout(); //this triggers resizing the listview to accommodate the
//string content. Needs to happen each time you
//text->setString(new_content) too.