有的时候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