2016-09-23 3 views
0

У меня есть ui::Text в ui::Layout и в зависимости от содержимого он переполняется. Я просмотрел Label::setOverflow и Label::setWrap от ui::TextvirtualRendererLabel, но я не вижу способа сделать его прокручиваемым и обернутым.Как сделать завернутый, прокручиваемый текст в cocos2d-x?

Как сделать прокручиваемый ui::Text, убедившись, что он правильно обертывает текст?

ответ

3

Уловка, вместо использования ui::Scrollview, использовать ui::ListView только с одним элементом внутри, ui::Text. Это позволяет прокручивать и динамически изменять размер контейнера, когда вы меняете текстовое содержимое ui::Text.

Ключ а) установка ширины ui::Text таких же размера, как его родитель ui::ListView и высоту до 0 и б) вызов 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. 
Смежные вопросы