duilib listUI滚动列表的时候回出现在LIst外面显示的情况

今天做的使用listui来查看数据发现的一个bug:当list控件的滚动条移动的时候,列表项只有一部分显示在list上面的时候剩余的一部分偶尔会显示到界外。

刚开始查看listui的时候,认为应该是setpos的时候,计算错误导致的问题。这么判断的依据是因为在移动滚动条的时候会产生刷新然后会引发重绘。然后就会引发setpos从而更新列表。但是跟进去的时候发现计算的全部是正确的。

既然计算都是正确的,那应该是在setpos之后又引发了更新。然后继续跟,发现之后会引发OnPaint操作,对所有的控件进行相应的更新。但是在OnPaint的时候发现了一个奇怪的情况每次调用OnPaint的时候进行绘制使用的是本身控件的RECT而不是本身控件的RECT跟本身控件所在区域的交集。所以传进去的pControl->DoPaint(hDC, rcPaint);应该修改成经过::IntersectRect(&rcTemp, &rc, &pControl->GetPos())计算完成的rcTemp而不是rcPaint。

所以使用OnPaint进行操作时的计算刷新区域失误而导致的一部分数据显示到外界。

时间: 2024-12-21 13:25:07

duilib listUI滚动列表的时候回出现在LIst外面显示的情况的相关文章

Cocos2d-x滚动列表具体解释(CCScrollView的使用)

今天要写一个滚动列表功能,类似以下这样.(图片资源都是自己从天天酷跑里面抠的,仅用于学习方便) 首先,这样一个列表就和iOS里面的UITableView没什么两样,当然,Android中肯定也存在类似的控件. 在cocos2d-x引擎中參照ios中的UITableView实现了一个叫做CCTableView的类,用于创建列表,对于熟悉ios程序设计的人来说,这个内容应该是非常好理解的. 以下就介绍下CCTableView. 首先,mark几个比較好的博文. Cocos2d-x CCTableVi

在滚动列表中实现视频的播放(ListView & RecyclerView)

英文原文:Implementing video playback in a scrolled list (ListView & RecyclerView) 本文将讲解如何在列表中实现视频播放.类似于诸如 Facebook, Instagram 或者 Magisto这些热门应用的效果: Facebook: Magisto: Instagram: 这片文章基于开源项目: VideoPlayerManager. 所有的代码和示例都在那里.本文将跳过许多东西.因此如果你要真正理解它是如何工作的,最好下载

Cocos2d-x滚动列表详解(CCScrollView的使用)

今天要写一个滚动列表功能,类似下面这样.(图片资源都是自己从天天酷跑里面抠的,仅用于学习方便) 首先,这样一个列表就和iOS里面的UITableView没什么两样,当然,Android中肯定也存在类似的控件. 在cocos2d-x引擎中参照ios中的UITableView实现了一个叫做CCTableView的类,用于创建列表,对于熟悉ios程序设计的人来说,这个内容应该是很好理解的. 下面就介绍下CCTableView. 首先,mark几个比较好的博文. Cocos2d-x CCTableVie

列表组件抽象(4)-滚动列表及分页说明

这是我写的关于列表组件的第4篇博客.前面的相关文章有: 1. 列表组件抽象(1)-概述 2. 列表组件抽象(2)-listViewBase说明 3. 列表组件抽象(3)-分页和排序管理说明 本文介绍列表组件中我对滚动列表及滚动分页的实现思路. 在pc端,通过滚动进行翻页的需求非常常见:移动端也是,只不过移动端由于scroll事件触发有延迟,必须等到屏幕停止滑动后才会触发,而不是在用户的手指离开屏幕就立即触发,所以移动端最好是不用scroll事件直接做滚动翻页,而是用iscroll这类插件提供更实

基于duilib的虚拟列表实现

本文由作者邹启文授权网易云社区发布. 在邮箱大师选择duilib作为UI开发库后,我们面临这样一个问题.随着时间的积累,用户数据会越来越多,如何保证我们的软件在展示这些数据时依然保持非常好的体验? 原生态duilib列表的实现是,数据与控件(列表的每一项)一一对应,即有多少数据,便有多少控件.通过粗略测试,我们发现,当数据量达到10000封邮件时,仅仅是构造这10000个控件就需要花费16s,也就是说在这16s内,用户无法操作软件,这是我们无法接受的.所以,我们决定改进duilib列表,通过虚拟

Android在滚动列表中实现视频的播放 ListView RecyclerView

英文原文:Implementing video playback in a scrolled list (ListView & RecyclerView) 本文将讲解如何在列表中实现视频播放.类似于诸如 Facebook, Instagram 或者 Magisto这些热门应用的效果: Facebook: Magisto: Instagram: 这片文章基于开源项目: VideoPlayerManager. 所有的代码和示例都在那里.本文将跳过许多东西.因此如果你要真正理解它是如何工作的,最好下载

仿Expandablelistview效果的ListView(加入了子列表渐入渐出的动画)

新来的项目要求第一眼一看就是用Expandablelistview.效果图如下:             其实本来希望直接使用Expandablelistview的,但是需求Expandablelistview在展开一个group时有个动画效果--该group的child一个一个滑动出来并且把下面的group"挤"下去.本以为这个Expandablelistview组件肯定有相关方法的,但竟然没有!网上居然也查不到(有很多人问同样的问题,答案却都是:继承Expandablelistvi

Jquery制作--循环滚动列表

自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可以的,如下(效果图上传后都加速了,实际效果比这个要慢很多): html代码如下: <!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <

(更新版)Android VideoPlayer 在滚动列表实现item视频播放(ListView控件和RecyclerView)

由于写这篇文章时挂着梯子 ,回来发现没有图片 对不起各位了-.. 现在我改好了! 2016.5.27 15时 阴 at BJ 转载请标明出处:粪乧 http://blog.csdn.net/wooder111/article/details/51513582 原文翻译: 点击跳转 在这篇文章中,我将介绍如何实现列表中的视频播放.在流行的应用,如Facebook,Instagram的或Magisto的工作原理相同: Facebook的: Magisto的: Instagram的: 这篇文章是基于开