28using namespace cocos2d::ui;
32UIListViewTests::UIListViewTests()
60 Size widgetSize =
_widget->getContentSize();
62 _displayValueLabel = Text::create(
"There are 50 items, but we only create 5 templates",
"fonts/Marker Felt.ttf", 20);
69 Text* alert = Text::create(
"ListView vertical",
"fonts/Marker Felt.ttf", 30);
70 alert->setColor(Color3B(159, 168, 176));
71 alert->setPosition(Vec2(widgetSize.width / 2.0f,
72 widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
75 Layout* root =
static_cast<Layout*
>(
_uiLayer->getChildByTag(81));
77 Layout* background =
dynamic_cast<Layout*
>(root->getChildByName(
"background_Panel"));
78 Size backgroundSize = background->getContentSize();
85 std::string ccstr = StringUtils::format(
"listview_item_%d", i);
93 _listView->setDirection(ui::ScrollView::Direction::VERTICAL);
95 _listView->setBackGroundImage(
"cocosui/green_edit.png");
97 _listView->setBackGroundImageScale9Enabled(
true);
98 _listView->setContentSize(Size(240.0f, 130.0f));
102 _listView->setScrollBarPositionFromCorner(Vec2(7, 7));
107 Button* default_button = Button::create(
"cocosui/backtotoppressed.png",
"cocosui/backtotopnormal.png");
108 default_button->setName(
"Title Button");
110 Layout* default_item = Layout::create();
111 default_item->setTouchEnabled(
true);
112 default_item->setContentSize(default_button->getContentSize());
113 default_button->setPosition(Vec2(default_item->getContentSize() / 2.0f));
114 default_item->addChild(default_button);
116 auto clippingNode = ClippingNode::create();
117 auto sprite = Sprite::create(
"cocosui/clippingHead.jpg");
118 clippingNode->addChild(sprite);
119 auto stencil = Sprite::create(
"cocosui/clippingStencil.jpg");
120 clippingNode->setStencil(stencil);
121 auto custom_item_contentSize = default_item->getContentSize();
122 clippingNode->setPosition(sprite->getContentSize().width/2,
123 custom_item_contentSize.height/2);
124 clippingNode->setScale(0.5);
125 default_item->addChild(clippingNode);
131 _listView->setGravity(ListView::Gravity::CENTER_VERTICAL);
136 Widget* item = default_item->clone();
138 Button* btn = (Button*)item->getChildByName(
"Title Button");
139 btn->setTitleText(
_array.at(i));
151 this->scheduleUpdate();
155 _listView->setInnerContainerSize(Size(
_listView->getInnerContainerSize().width, totalHeight));
163 _indexLabels[0] = Text::create(
" ",
"fonts/Marker Felt.ttf", 12);
167 _indexLabels[1] = Text::create(
" ",
"fonts/Marker Felt.ttf", 12);
171 _indexLabels[2] = Text::create(
" ",
"fonts/Marker Felt.ttf", 12);
177 _listView->ScrollView::addEventListener([
this](Ref* ref, ScrollView::EventType eventType) {
178 ListView* listView =
dynamic_cast<ListView*
>(ref);
179 if(listView ==
nullptr || eventType != ScrollView::EventType::CONTAINER_MOVED)
183 auto bottom = listView->getBottommostItemInCurrentView();
184 auto center = listView->getCenterItemInCurrentView();
185 auto top = listView->getTopmostItemInCurrentView();
187 _indexLabels[0]->setString(StringUtils::format(
"Top index=%zd", listView->getIndex(top)));
188 _indexLabels[1]->setString(StringUtils::format(
"Center\nindex=%zd", listView->getIndex(center)));
189 _indexLabels[2]->setString(StringUtils::format(
"Bottom index=%zd", listView->getIndex(bottom)));
201 auto worldPos = item->getParent()->convertToWorldSpaceAR(item->getPosition());
202 auto viewPos = this->
_listView->convertToNodeSpaceAR(worldPos);
208 auto itemTemplate =
_listView->getItems().at(templateID);
209 Button* btn = (Button*)itemTemplate->getChildByName(
"Title Button");
211 itemTemplate->setTag(itemID);
212 btn->setTitleText(
_array.at(itemID));
224 auto listViewHeight =
_listView->getContentSize().height;
231 auto item = items.at(i);
234 if (itemPos < -_bufferZone && item->getPosition().y +
_reuseItemOffset < totalHeight) {
235 int itemID = item->getTag() - (int)items.size();
237 CCLOG(
"itemPos = %f, itemID = %d, templateID = %d", itemPos, itemID, i);
246 int itemID = item->getTag() + (int)items.size();
247 CCLOG(
"itemPos = %f, itemID = %d, templateID = %d", itemPos, itemID, i);
260 case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_START:
262 ListView* listView =
static_cast<ListView*
>(pSender);
263 auto item = listView->getItem(listView->getCurSelectedIndex());
264 log(
"select child start index = %d", item->getTag());
267 case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_END:
269 ListView* listView =
static_cast<ListView*
>(pSender);
270 auto item = listView->getItem(listView->getCurSelectedIndex());
271 log(
"select child end index = %d", item->getTag());
282 case ui::ScrollView::EventType::SCROLL_TO_BOTTOM:
283 CCLOG(
"SCROLL_TO_BOTTOM");
285 case ui::ScrollView::EventType::SCROLL_TO_TOP:
286 CCLOG(
"SCROLL_TO_TOP");
308 Size widgetSize =
_widget->getContentSize();
310 _displayValueLabel = Text::create(
"There are 50 items, but we only create 5 templates",
311 "fonts/Marker Felt.ttf",
316 widgetSize.height / 2.0f
322 Text* alert = Text::create(
"ListView horizontal",
"fonts/Marker Felt.ttf", 30);
323 alert->setColor(Color3B(159, 168, 176));
324 alert->setPosition(Vec2(widgetSize.width / 2.0f,
325 widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
328 Layout* root =
static_cast<Layout*
>(
_uiLayer->getChildByTag(81));
330 Layout* background =
static_cast<Layout*
>(root->getChildByName(
"background_Panel"));
331 Size backgroundSize = background->getContentSize();
338 std::string ccstr = StringUtils::format(
"listview_item_%d", i);
346 _listView->setDirection(ui::ScrollView::Direction::HORIZONTAL);
349 _listView->setBackGroundImage(
"cocosui/green_edit.png");
350 _listView->setBackGroundImageScale9Enabled(
true);
351 _listView->setContentSize(Size(240.0f, 130.0f));
352 _listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
353 (backgroundSize.width -
_listView->getContentSize().width) / 2.0f,
354 (widgetSize.height - backgroundSize.height) / 2.0f +
355 (backgroundSize.height -
_listView->getContentSize().height) / 2.0f));
357 _listView->setScrollBarPositionFromCorner(Vec2(7, 7));
362 Button* default_button = Button::create(
"cocosui/backtotoppressed.png",
363 "cocosui/backtotopnormal.png");
364 default_button->setName(
"Title Button");
366 Layout *default_item = Layout::create();
367 default_item->setTouchEnabled(
true);
368 default_item->setContentSize(default_button->getContentSize());
369 default_button->setPosition(Vec2(default_item->getContentSize().width / 2.0f,
370 default_item->getContentSize().height / 2.0f));
371 default_item->addChild(default_button);
377 _listView->setGravity(ListView::Gravity::CENTER_VERTICAL);
382 Widget* item = default_item->clone();
384 Button* btn = (Button*)item->getChildByName(
"Title Button");
385 btn->setTitleText(
_array.at(i));
398 _listView->getInnerContainer()->setContentSize(Size(totalWidth,
_listView->getInnerContainerSize().height));
401 this->scheduleUpdate();
411 auto worldPos = item->getParent()->convertToWorldSpaceAR(item->getPosition());
412 auto viewPos = this->
_listView->convertToNodeSpaceAR(worldPos);
418 auto itemTemplate =
_listView->getItems().at(templateID);
419 Button* btn = (Button*)itemTemplate->getChildByName(
"Title Button");
421 itemTemplate->setTag(itemID);
422 btn->setTitleText(
_array.at(itemID));
438 auto item = items.at(i);
441 if (itemPos < -_bufferZone && item->getPosition().x +
_reuseItemOffset < totalWidth) {
442 int itemID = item->getTag() + (int)items.size();
444 CCLOG(
"itemPos = %f, itemID = %d, templateID = %d", itemPos, itemID, i);
453 int itemID = item->getTag() - (int)items.size();
454 CCLOG(
"itemPos = %f, itemID = %d, templateID = %d", itemPos, itemID, i);
467 case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_START:
469 ListView* listView =
static_cast<ListView*
>(pSender);
470 auto item = listView->getItem(listView->getCurSelectedIndex());
471 log(
"select child start index = %d", item->getTag());
474 case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_END:
476 ListView* listView =
static_cast<ListView*
>(pSender);
477 auto item = listView->getItem(listView->getCurSelectedIndex());
478 log(
"select child end index = %d", item->getTag());
490 Size widgetSize =
_widget->getContentSize();
492 auto label = Text::create(
"Issue 12692",
"fonts/Marker Felt.ttf", 32);
493 label->setName(
"Text Title");
494 label->setAnchorPoint(Vec2(0.5f, -1.0f));
495 label->setPosition(Vec2(widgetSize.width / 2.0f,
496 widgetSize.height / 2.0f + label->getContentSize().height * 1.5f));
500 Text* alert = Text::create(
"ListView in ListView enable Scissor Clipping",
"fonts/Marker Felt.ttf", 20);
501 alert->setName(
"Text Alert");
502 alert->setColor(Color3B(159, 168, 176));
503 alert->setPosition(Vec2(widgetSize.width / 2.0f,
504 widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
507 Layout* root =
static_cast<Layout*
>(
_uiLayer->getChildByTag(81));
509 Layout* background =
dynamic_cast<Layout*
>(root->getChildByName(
"background_Panel"));
510 Size backgroundSize = background->getContentSize();
513 ListView* listView = ListView::create();
515 listView->setDirection(ui::ScrollView::Direction::VERTICAL);
516 listView->setBounceEnabled(
true);
517 listView->setBackGroundImage(
"cocosui/green_edit.png");
518 listView->setBackGroundImageScale9Enabled(
true);
519 listView->setContentSize(Size(240.0f, 130.0f));
520 listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
521 (backgroundSize.width - listView->getContentSize().width) / 2.0f,
522 (widgetSize.height - backgroundSize.height) / 2.0f +
523 (backgroundSize.height - listView->getContentSize().height) / 2.0f));
524 listView->setScrollBarPositionFromCorner(Vec2(7, 7));
525 listView->setClippingEnabled(
true);
526 listView->setClippingType(ui::Layout::ClippingType::SCISSOR);
527 listView->setName(
"listview1");
530 auto list2 = ListView::create();
531 list2->setDirection(ui::ScrollView::Direction::VERTICAL);
532 list2->setBounceEnabled(
true);
533 list2->setBackGroundImage(
"cocosui/green_edit.png");
534 list2->setBackGroundImageScale9Enabled(
true);
535 list2->setContentSize(Size(240, 65));
536 list2->setClippingEnabled(
true);
537 list2->setClippingType(ui::Layout::ClippingType::SCISSOR);
538 list2->setName(
"listview2");
539 listView->insertCustomItem(list2, 0);
542 Button* default_button = Button::create(
"cocosui/backtotoppressed.png",
"cocosui/backtotopnormal.png");
543 default_button->setName(
"Title Button");
545 Layout* default_item = Layout::create();
546 default_item->setTouchEnabled(
true);
547 default_item->setContentSize(default_button->getContentSize());
548 default_button->setPosition(Vec2(default_item->getContentSize().width / 2.0f,
549 default_item->getContentSize().height / 2.0f));
550 default_item->addChild(default_button);
553 listView->setItemModel(default_item);
554 listView->pushBackDefaultItem();
555 listView->pushBackDefaultItem();
556 listView->pushBackDefaultItem();
559 Button* default_button = Button::create(
"cocosui/backtotoppressed.png",
"cocosui/backtotopnormal.png");
560 default_button->setName(
"Title Button 2");
562 Layout* default_item = Layout::create();
563 default_item->setTouchEnabled(
true);
564 default_item->setContentSize(default_button->getContentSize());
565 default_button->setPosition(Vec2(default_item->getContentSize().width / 2.0f,
566 default_item->getContentSize().height / 2.0f));
567 default_item->addChild(default_button);
570 list2->setItemModel(default_item);
571 list2->pushBackDefaultItem();
572 list2->pushBackDefaultItem();
573 list2->pushBackDefaultItem();
586 Size widgetSize =
_widget->getContentSize();
588 auto label = Text::create(
"Issue 8316",
"fonts/Marker Felt.ttf", 32);
589 label->setAnchorPoint(Vec2(0.5f, -1.0f));
590 label->setPosition(Vec2(widgetSize.width / 2.0f,
591 widgetSize.height / 2.0f + label->getContentSize().height * 1.5f));
594 Text* alert = Text::create(
"Can not scroll list view",
"fonts/Marker Felt.ttf", 20);
595 alert->setColor(Color3B(159, 168, 176));
596 alert->setPosition(Vec2(widgetSize.width / 2.0f,
597 widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
600 Layout* root =
static_cast<Layout*
>(
_uiLayer->getChildByTag(81));
602 Layout* background =
dynamic_cast<Layout*
>(root->getChildByName(
"background_Panel"));
603 Size backgroundSize = background->getContentSize();
606 ListView* listView = ListView::create();
608 listView->setDirection(ui::ScrollView::Direction::VERTICAL);
609 listView->setBounceEnabled(
true);
610 listView->setTouchEnabled(
false);
611 listView->setBackGroundImage(
"cocosui/green_edit.png");
612 listView->setBackGroundImageScale9Enabled(
true);
613 listView->setContentSize(Size(240.0f, 130.0f));
614 listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
615 (backgroundSize.width - listView->getContentSize().width) / 2.0f,
616 (widgetSize.height - backgroundSize.height) / 2.0f +
617 (backgroundSize.height - listView->getContentSize().height) / 2.0f));
618 listView->setScrollBarPositionFromCorner(Vec2(7, 7));
619 listView->setClippingEnabled(
true);
620 listView->setClippingType(ui::Layout::ClippingType::SCISSOR);
621 listView->setName(
"listview1");
624 Button* default_button = Button::create(
"cocosui/backtotoppressed.png",
"cocosui/backtotopnormal.png");
625 default_button->setName(
"Title Button");
627 Layout* default_item = Layout::create();
628 default_item->setTouchEnabled(
true);
629 default_item->setContentSize(default_button->getContentSize());
630 default_button->setPosition(Vec2(default_item->getContentSize().width / 2.0f,
631 default_item->getContentSize().height / 2.0f));
632 default_item->addChild(default_button);
635 listView->setItemModel(default_item);
636 listView->pushBackDefaultItem();
637 listView->pushBackDefaultItem();
638 listView->pushBackDefaultItem();
659 Size layerSize =
_uiLayer->getContentSize();
661 static int NUMBER_OF_ITEMS = 31;
663 _titleLabel = Text::create(
"Scroll to item",
"fonts/Marker Felt.ttf", 32);
672 _listView->setBackGroundImage(
"cocosui/green_edit.png");
673 _listView->setBackGroundImageScale9Enabled(
true);
674 _listView->setContentSize(layerSize / 2);
675 _listView->setScrollBarPositionFromCorner(Vec2(7, 7));
677 _listView->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
683 DrawNode* pNode = DrawNode::create();
684 Vec2 center = layerSize / 2;
688 pNode->drawLine(Vec2(center.x, center.y - halfY), Vec2(center.x, center.y + halfY), Color4F(0, 0, 0, 1));
693 pNode->drawLine(Vec2(center.x - halfX, center.y), Vec2(center.x + halfX, center.y), Color4F(0, 0, 0, 1));
695 pNode->setLineWidth(2);
700 auto pButton = Button::create(
"cocosui/backtotoppressed.png",
"cocosui/backtotopnormal.png");
701 pButton->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT);
702 pButton->setScale(0.8f);
703 pButton->setPosition(Vec2(layerSize / 2) + Vec2(120.0f, -60.0f));
704 pButton->setTitleText(StringUtils::format(
"Go to '%d'",
_nextIndex));
705 pButton->addClickEventListener([
this, pButton](Ref*) {
708 pButton->setTitleText(StringUtils::format(
"Go to '%d'",
_nextIndex));
713 static const Size BUTTON_SIZE(50, 40);
714 for (
int i = 0; i < NUMBER_OF_ITEMS; ++i)
716 auto pButton = Button::create(
"cocosui/button.png",
"cocosui/buttonHighlighted.png");
717 pButton->setContentSize(BUTTON_SIZE);
718 pButton->setScale9Enabled(
true);
719 pButton->setTitleText(StringUtils::format(
"Button-%d", i));
735 Size layerSize =
_uiLayer->getContentSize();
737 _titleLabel = Text::create(
"Magnetic scroll",
"fonts/Marker Felt.ttf", 32);
746 _listView->setBackGroundImage(
"cocosui/green_edit.png");
747 _listView->setBackGroundImageScale9Enabled(
true);
748 _listView->setContentSize(layerSize / 2);
749 _listView->setScrollBarPositionFromCorner(Vec2(7, 7));
751 _listView->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
757 DrawNode* pNode = DrawNode::create();
758 Vec2 center = layerSize / 2;
762 pNode->drawLine(Vec2(center.x, center.y - halfY), Vec2(center.x, center.y + halfY), Color4F(0, 0, 0, 1));
767 pNode->drawLine(Vec2(center.x - halfX, center.y), Vec2(center.x + halfX, center.y), Color4F(0, 0, 0, 1));
769 pNode->setLineWidth(2);
775 for(
int i = 0; i < 5; ++i)
777 _indexLabels[i] = Text::create(
" ",
"fonts/Marker Felt.ttf", 12);
781 float deltaX = 145, deltaY = 90;
789 _listView->ScrollView::addEventListener([
this](Ref* ref, ScrollView::EventType eventType) {
790 ListView* listView =
dynamic_cast<ListView*
>(ref);
791 if(listView ==
nullptr || eventType != ScrollView::EventType::CONTAINER_MOVED)
795 auto left = listView->getLeftmostItemInCurrentView();
796 auto right = listView->getRightmostItemInCurrentView();
797 auto top = listView->getTopmostItemInCurrentView();
798 auto bottom = listView->getBottommostItemInCurrentView();
799 auto center = listView->getCenterItemInCurrentView();
801 _indexLabels[0]->setString(StringUtils::format(
"Left\nindex=%zd", listView->getIndex(left)));
802 _indexLabels[1]->setString(StringUtils::format(
"RIght\nindex=%zd", listView->getIndex(right)));
803 _indexLabels[2]->setString(StringUtils::format(
"Top index=%zd", listView->getIndex(top)));
804 _indexLabels[3]->setString(StringUtils::format(
"Bottom index=%zd", listView->getIndex(bottom)));
805 _indexLabels[4]->setString(StringUtils::format(
"Center\nindex=%zd", listView->getIndex(center)));
810 _listView->setMagneticType(ListView::MagneticType::NONE);
814 auto pButton = Button::create(
"cocosui/backtotoppressed.png",
"cocosui/backtotopnormal.png");
815 pButton->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT);
816 pButton->setScale(0.8f);
817 pButton->setPosition(Vec2(layerSize / 2) + Vec2(130.0f, -60.0f));
818 pButton->setTitleText(
"Next Magnetic");
819 pButton->addClickEventListener([
this](Ref*) {
820 ListView::MagneticType eCurrentType =
_listView->getMagneticType();
821 ListView::MagneticType eNextType = ListView::MagneticType::NONE;
823 if(eCurrentType == ListView::MagneticType::NONE)
825 eNextType = ListView::MagneticType::CENTER;
828 else if(eCurrentType == ListView::MagneticType::CENTER)
830 eNextType = ListView::MagneticType::BOTH_END;
831 sString =
"BOTH_END";
833 else if(eCurrentType == ListView::MagneticType::BOTH_END)
837 eNextType = ListView::MagneticType::LEFT;
842 eNextType = ListView::MagneticType::TOP;
846 else if(eCurrentType == ListView::MagneticType::LEFT)
848 eNextType = ListView::MagneticType::RIGHT;
851 else if(eCurrentType == ListView::MagneticType::RIGHT)
853 eNextType = ListView::MagneticType::NONE;
856 else if(eCurrentType == ListView::MagneticType::TOP)
858 eNextType = ListView::MagneticType::BOTTOM;
861 else if(eCurrentType == ListView::MagneticType::BOTTOM)
863 eNextType = ListView::MagneticType::NONE;
867 _titleLabel->setString(StringUtils::format(
"MagneticType - %s", sString.c_str()));
872 static const Size BUTTON_SIZE(100, 70);
873 for (
int i = 0; i < 40; ++i)
875 auto pButton = Button::create(
"cocosui/button.png",
"cocosui/buttonHighlighted.png");
876 pButton->setContentSize(BUTTON_SIZE);
877 pButton->setScale9Enabled(
true);
878 pButton->setTitleText(StringUtils::format(
"Button-%d", i));
894 Size layerSize =
_uiLayer->getContentSize();
896 _titleLabel = Text::create(
"Set Padding",
"fonts/Marker Felt.ttf", 32);
905 _listView->setBackGroundImage(
"cocosui/green_edit.png");
906 _listView->setBackGroundImageScale9Enabled(
true);
907 _listView->setContentSize(layerSize / 2);
908 _listView->setScrollBarPositionFromCorner(Vec2(7, 7));
910 _listView->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
911 _listView->setGravity(ListView::Gravity::TOP);
918 DrawNode* pNode = DrawNode::create();
919 Vec2 center = layerSize / 2;
923 pNode->drawLine(Vec2(center.x, center.y - halfY), Vec2(center.x, center.y + halfY), Color4F(0, 0, 0, 1));
928 pNode->drawLine(Vec2(center.x - halfX, center.y), Vec2(center.x + halfX, center.y), Color4F(0, 0, 0, 1));
930 pNode->setLineWidth(2);
936 auto title = Text::create(
"Padding",
"fonts/Marker Felt.ttf", 14);
937 title->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
938 title->setPosition(Vec2(30.0f, 170.0f));
940 for (
int i = 0; i < 4; ++i)
942 auto slider = Slider::create();
943 slider->loadBarTexture(
"cocosui/sliderTrack.png");
944 slider->loadSlidBallTextures(
"cocosui/sliderThumb.png",
"cocosui/sliderThumb.png",
"");
945 slider->loadProgressBarTexture(
"cocosui/sliderProgress.png");
946 slider->setScale9Enabled(
true);
947 slider->setCapInsets(Rect(0.0f, 0.0f, 0.0f, 0.0f));
948 slider->setContentSize(Size(30.0f, 10.0f));
949 slider->setPosition(Vec2(60.0f, 150.0f - (25 * i)));
955 if (i == 0) str =
"Left";
956 else if (i == 1) str =
"Top";
957 else if (i == 2) str =
"Right";
958 else if (i == 3) str =
"Bottom";
962 auto text = Text::create(str,
"fonts/Marker Felt.ttf", 12);
963 text->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT);
964 text->setPosition(Vec2(3, 150 - (25 * i)));
969 auto text = Text::create(str +
"\nPadding=0",
"fonts/Marker Felt.ttf", 12);
970 text->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT);
971 text->setPosition(Vec2(layerSize.width - 65, 200.0f - (40 * i)));
981 for(
int i = 0; i < 5; ++i)
983 _indexLabels[i] = Text::create(
" ",
"fonts/Marker Felt.ttf", 12);
987 float deltaX = 145, deltaY = 90;
995 _listView->ScrollView::addEventListener([
this](Ref* ref, ScrollView::EventType eventType) {
996 ListView* listView =
dynamic_cast<ListView*
>(ref);
997 if(listView ==
nullptr || eventType != ScrollView::EventType::CONTAINER_MOVED)
1001 auto left = listView->getLeftmostItemInCurrentView();
1002 auto right = listView->getRightmostItemInCurrentView();
1003 auto top = listView->getTopmostItemInCurrentView();
1004 auto bottom = listView->getBottommostItemInCurrentView();
1005 auto center = listView->getCenterItemInCurrentView();
1007 _indexLabels[0]->setString(StringUtils::format(
"Left\nindex=%zd", listView->getIndex(left)));
1008 _indexLabels[1]->setString(StringUtils::format(
"RIght\nindex=%zd", listView->getIndex(right)));
1009 _indexLabels[2]->setString(StringUtils::format(
"Top index=%zd", listView->getIndex(top)));
1010 _indexLabels[3]->setString(StringUtils::format(
"Bottom index=%zd", listView->getIndex(bottom)));
1011 _indexLabels[4]->setString(StringUtils::format(
"Center\nindex=%zd", listView->getIndex(center)));
1016 static const Size BUTTON_SIZE(100, 70);
1017 for (
int i = 0; i < 40; ++i)
1019 auto pButton = Button::create(
"cocosui/button.png",
"cocosui/buttonHighlighted.png");
1020 pButton->setContentSize(BUTTON_SIZE);
1021 pButton->setScale9Enabled(
true);
1022 pButton->setTitleText(StringUtils::format(
"Button-%d", i));
1030 if (type == Slider::EventType::ON_PERCENTAGE_CHANGED)
1032 auto slider =
dynamic_cast<Slider*
>(pSender);
1034 if (slider && slider->getTag() == 0)
1036 int left = slider->getPercent() / 100.f * 50.f;
1037 CCLOG(
"Left Padding: %d", left);
1039 _paddingLabels[0]->setString(StringUtils::format(
"Left\nPadding=%d", left));
1042 if (slider && slider->getTag() == 1)
1044 int top = slider->getPercent() / 100.f * 50.f;
1045 CCLOG(
"Top Padding: %d", top);
1047 _paddingLabels[1]->setString(StringUtils::format(
"Top\nPadding=%d", top));
1050 if (slider && slider->getTag() == 2)
1052 int right = slider->getPercent() / 100.f * 50.f;
1053 CCLOG(
"Right Padding: %d", right);
1055 _paddingLabels[2]->setString(StringUtils::format(
"Right\nPadding=%d", right));
1058 if (slider && slider->getTag() == 3)
1060 int bottom = slider->getPercent() / 100.f * 50.f;
1061 CCLOG(
"Bottom Padding: %d", bottom);
1063 _paddingLabels[3]->setString(StringUtils::format(
"Bottom\nPadding=%d", bottom));
#define ADD_TEST_CASE(__className__)
const char * font_UIListViewTest
virtual bool init() override
virtual bool init() override
virtual std::string title() const
virtual bool init() override
~UIListViewTest_Horizontal()
UIListViewTest_Horizontal()
void selectedItemEvent(cocos2d::Ref *sender, cocos2d::ui::ListView::EventType type)
virtual void update(float dt) override
float getItemPositionXInView(cocos2d::ui::Widget *item) const
std::vector< std::string > _array
cocos2d::ui::ListView * _listView
cocos2d::ui::Text * _displayValueLabel
void updateItem(int itemID, int templateID)
cocos2d::ui::Text * _titleLabel
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const =0
virtual bool init() override
cocos2d::ui::ListView * _listView
cocos2d::ui::Text * _indexLabels[5]
virtual bool init() override
cocos2d::ui::Text * _titleLabel
cocos2d::ui::Text * _indexLabels[5]
void sliderEvent(cocos2d::Ref *pSender, cocos2d::ui::Slider::EventType type)
cocos2d::ui::ListView * _listView
virtual cocos2d::ui::ScrollView::Direction getListViewDirection() const =0
cocos2d::ui::Text * _paddingLabels[4]
virtual void update(float dt) override
std::vector< std::string > _array
cocos2d::ui::Text * _displayValueLabel
virtual bool init() override
float getItemPositionYInView(cocos2d::ui::Widget *item) const
cocos2d::ui::ListView * _listView
void selectedItemEvent(cocos2d::Ref *sender, cocos2d::ui::ListView::EventType type)
float _itemTemplateHeight
void updateItem(int itemID, int templateID)
~UIListViewTest_Vertical()
cocos2d::ui::Text * _indexLabels[3]
void selectedItemEventScrollView(cocos2d::Ref *sender, cocos2d::ui::ScrollView::EventType type)
UIListViewTest_Vertical()
cocos2d::Layer * _uiLayer
virtual bool init() override
cocos2d::ui::Layout * _widget