塞班岛

siwei的S60之旅

[Symbian]慎用CListItemDrawer::EDisableHighlight屏蔽高亮效果

有的时候Listbox只需要显示数据,并不需要用户进行选择,这个时候可以用

iListBox->ItemDrawer()->SetFlags(CListItemDrawer::EDisableHighlight);

来隐藏高亮的效果。恢复的话,只需要ClearFlags即可。实际上基本上所有Listbox的样式都是在ItemDrawer里面进行控制的。也可以自己继承这个类定制自己的Listbox修饰类。

效果:

这么做在一般情况下OK,但如果listbox内容超过一页就有问题了!

设想这样一种场景,如果listbox使用这个flag屏蔽了高亮,用户按下上下方向键会有什么情况呢?

答案就是,虽然高亮效果被屏蔽了,但“不可见”高亮选中的项目还是存在的!这个时候如果listbox有多页的话,必须按N次,将高亮(虽然看不到)移动到最底下一个项目,然后才会翻页。

所以这个时候要在创建listbox时候使用另外一个flag:
   

iListBox->ConstructL( EAknListBoxViewerFlags );

这个flag的具体定义为:

#define EAknListBoxViewerFlags        (EAknListBoxPageAtOnceScrolling | EAknListBoxDisableHighlight)

它不仅会屏蔽高亮效果,而且会在用户按下方向键时候直接翻页,而不仅仅是移动高亮条。

// End of File

 


posted on 2009-12-11 11:16 siwei 阅读(535) 评论(0)  编辑 收藏 引用 所属分类: Symbian


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜