cocos代码研究(25)Widget子类PageView学习笔记
基础理论
ListView控件是一个显示滚动项目列表的视图组。 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView。
代码实践
static ListView * create()
创建一个空ListView。
void setItemModel (Widget *model)
设定一个ListView的模型。 当调用pushBackDefaultItem,该模型将作为一个蓝图,新副本将被插入到ListView控件。
void pushBackDefaultItem ()
插入一个默认项(通过克隆模式创建)到ListView的尾部。
void insertDefaultItem (ssize_t index)
插入一个默认项(通过克隆模式创建)到ListView的指定位置。
void pushBackCustomItem (Widget *item)
插入一个自定义项到ListView的尾部。
void insertCustomItem (Widget *item, ssize_t index)
插入自定义窗口小控件到ListView中指定索引处。
void removeLastItem ()
删除ListView最后一个项目
void removeItem (ssize_t index)
在给定索引处删除一个项目
void removeAllItems ()
删除当前ListView中的所有项目。
Widget * getItem (ssize_t index) const
返回一个给定的索引处的项目。
Vector< Widget * > & getItems ()
返回ListView中的所有项目。
ssize_t getIndex (Widget *item) const
返回指定窗口小控件的索引。
void setGravity (Gravity gravity)
设置的ListView引力。
void setItemsMargin (float margin)
设置ListView中每一项之间的边距。
float getItemsMargin () const
查询ListView每个项之间的边距。
ssize_t getCurSelectedIndex () const
查询当前选中控件的索引。
void addEventListenerListView (Ref *target, SEL_ListViewEvent selector)
添加ListView点击事件的回调,ListView中的一个项目被点击将会调用回调函数。
void addEventListener (const ccListViewCallback &callback)
添加ListView点击事件的回调,ListView中的一个项目被点击将会调用回调函数。
void requestRefreshView ()
手动刷新view和ListView的布局。 该方法将列表视图内容标记为dirty,内容视图将在下一帧刷新。
void refreshView ()
更新ListView的视图。
实例:
// Create the list view ex ListView* listView = ListView::create(); // set list view ex direction listView->setDirection(ui::ScrollView::Direction::HORIZONTAL); listView->setTouchEnabled(true); listView->setBounceEnabled(true); listView->setBackGroundImage("cocosui/green_edit.png"); listView->setBackGroundImageScale9Enabled(true); listView->setContentSize(Size(240, 130)); listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + (backgroundSize.width - listView->getContentSize().width) / 2.0f, (widgetSize.height - backgroundSize.height) / 2.0f + (backgroundSize.height - listView->getContentSize().height) / 2.0f)); listView->addEventListener((ui::ListView::ccListViewCallback)CC_CALLBACK_2(UIListViewTest_Horizontal::selectedItemEvent, this)); listView->setScrollBarPositionFromCorner(Vec2(7, 7)); _uiLayer->addChild(listView); // add custom item for (int i = 0; i < count / 4; ++i) { Button* custom_button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); custom_button->setName("Title Button"); custom_button->setScale9Enabled(true); custom_button->setContentSize(default_button->getContentSize()); Layout* custom_item = Layout::create(); custom_item->setContentSize(custom_button->getContentSize()); custom_button->setPosition(Vec2(custom_item->getContentSize().width / 2.0f, custom_item->getContentSize().height / 2.0f)); custom_item->addChild(custom_button); listView->pushBackCustomItem(custom_item); }