ListView 怎么 开启弹性后 总有一两行被缩上去了。

ListView 怎么 开启弹性后 总有一两行被缩上去了。:8:

比如
正常 是 可以显示
美 国
中 国
中 国

但开启弹性后。只显示
中 国
中 国
美国被吃了?。 其实没有。向下拉就能显示了。 尼玛 我看到美国了。松开鼠标先。。。草 美国不见了。 被强制的缩上去了。:10:

难道一定要 widget 的Size 不能设置 高度为 美国两个字的 高度?一定要 加大到 50 至 100才能 不被强制缩上去?:3::3:

应该是你内容器的contentsize没有算对。

调用一下listView的 refreshView()

Layout 的 还是 ListView 的SIze?

没用过ListView但感觉跟ScrollView差不多。。
等我 晚上回家给你画个图理解一下,如果你还没解决的话。。

:12: 嗯 等你晚上的结果 不行就换 ScrollView:12:
我是找不到错误 了。。。:12:

解决了。。。竟然 是 widget 的pos不让设置只能 永久的。。。为0 =- =唉又一大坑

good for you

:12: 坑太多了。。。四处埋雷啊。。。:3:

对了问个问题 在 ListView中 cocos2d::extensionui::Button 这个按钮他是怎么判断点击的。 怎么 我自己封装的Button用以下 方法判断 是否点击了按钮 ,结果是全部按钮都响应为点击状态了。。。
listener->onTouchEnded = =](Touch *t,Event *e){
if (this->getBoundingBox().containsPoint((t->getLocation())) {
// 此处省略一堆代码
log(“点击了”);
}
}

详细在这个贴:http://www.cocoachina.com/bbs/read.php?tid-278558.html
:867:

this->getcontainspoint换成e->getCurrentTargeet

if (e->getCurrentTarget() == this) {
:5:是这样吗?
:5:

学习了。= =
auto target = static_cast<UIButton*>(e->getCurrentTarget());
auto locationInNode = target->convertToNodeSpace(t->getLocation());

auto s = target->getContentSize();

auto rect = Rect(0, 0, s.width, s.height);
if (rect.containsPoint(locationInNode)) {

这样就可以 了。。。 :7:

对,感觉楼主是从2.x进化来的。

:12: 差不多一路都是看的 2.X 文章。

:9: 額用了那么久这个 方法之后 发现 了个 Bug。。。

Listview 中的看不见的区域 这个 方法也能 触发到按钮的事件。。。

如下图: - -!

---------------------------------- 上面 这个 区域是 看不见的

|---------------|-

按钮一

|---------------|-

按钮二

--------------------------------- 下面这个 区域是看不见的

|---------------|-

按钮三
---------------
按钮四
---------------

当点击 区域看不见的按钮也能触发到 点击事件 。

当 我滚动了列表 后是这样的

|---------------|-
| 按钮一 | --按钮一也响应了。。。
|---------------|
---------------------------------- 上面 这个 区域是 看不见的
|---------------|-

按钮二

|---------------|-

按钮三

--------------------------------- 下面这个 区域是看不见的
|---------------|-
| 按钮四 | – 这里也响应了。
|---------------|

就是这个方法

auto target = static_cast<UIButton*>(e->getCurrentTarget());
auto  locationInNode = target->convertToNodeSpace(t->getLocation());

auto s = target->getContentSize();

auto rect = Rect(0, 0, s.width, s.height);
if (rect.containsPoint(locationInNode)) {

目前没找到解决办法 求助:12:

拿到Target后和ListView可视区域做个containsPoint

:12: 这样按钮就不单一了。。。只能 用这个 方法吗:5:

        if (_ViewVisible) {
            if (_ViewVisible->getBoundingBox().containsPoint(Node::convertToNodeSpace(t->getLocation()))) {
                //执行鼠标事件。
            }
       }

_ViewVisible 就是 listview

上面的代码不行呀= =:6:

版主大大。。。求解决办法 = =。。。卡了这么多天了。:6:
:5:

哦? 我是说叫你和listView的可视区域做containspoint。。

CCRect listVisibleRect = CCRectMake(listview.positon.x, listview.position.y, listviewVisibleSize.width, listviewVisibleSize.height)

listVisibleRect.containsPoint(touchPoint)