我在ui::Text
中获得了ui::Layout
,并且根据内容,它会溢出。我已经查看Label::setOverflow
Label::setWrap
ui::Text
virtualRenderer
Label
ui::Text
ui::Scrollview
,但我没有看到使其可滚动和包装的方法。
如何在确保正确包装文字的同时制作可滚动的ui::ListView
?
答案 0 :(得分:3)
诀窍是,使用ui::Text
而不是ui::Text
,只使用一个项目ui::Text
。这使您可以滚动并动态调整容器大小,以便更改ui::ListView
的文本内容。
关键是a)将my_listview->requestDoLayout()
的宽度设置为与其父ui::Panel
相同的大小,将高度设置为0和b)随时在文本列表视图上调用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.
内容发生变化,以便可滚动区域反映出来。
以下是您如何将大量文字滚动到较小的function getDate() {
//var tt = document.getElementById('inputDater').value;
var date = new Date();//(tt);
var newdate = new Date(date);
newdate.setDate(newdate.getDate() + 364);
var dd = newdate.getDate();
var mm = newdate.getMonth() + 1;
var y = newdate.getFullYear();
//2 digit format
dd = dd.toString().length == 1 ? '0' + dd : dd;
mm = mm.toString().length == 1 ? '0' + mm : mm;
var someFormattedDate = y + '-' + mm + '-' + dd;
console.log(someFormattedDate);
};
getDate();
中的示例:
{{1}}