效果图如下:
(1)支持显示Tab风格及普通风格
(2)支持多列显示
(3)支持多选或单选
(4)支持显示图标或不显示
(5)支持自定义皮肤颜色
如何使用:
yourContainer.h 中添加如下代码:
class CMltItemListBox; //声明
//添加成员变量
CMltItemListBox* iListBox;
CMltItemListBox* iTabCtrl;
yourContainer.cpp 中添加如下代码:
#include "MultiItemListBox.h"
//创建列表
void CYourContainer::CreateListL()
{
TListBoxSkin tabSkin;
tabSkin.iBgBrushColor = TRgb(255, 255, 255);
tabSkin.iBgPenColor = TRgb(230, 230, 230);
tabSkin.iBgLinePenColor = TRgb(33, 65, 122);
tabSkin.iFocusBrushColor = TRgb(202, 224, 252);
tabSkin.iTextColor = TRgb(128, 128, 128);
tabSkin.iTextFocusColor = TRgb(68, 68, 68);
iTabCtrl = CMltItemListBox::NewL(EHorizontal, this);
iTabCtrl->SetSkin(tabSkin);
TListBoxSkin listSkin;
listSkin.iBgBrushColor = TRgb(255, 255, 255);
listSkin.iBgPenColor = TRgb(230, 230, 230);
listSkin.iFocusBrushColor = TRgb(202, 224, 252);
listSkin.iTextColor = TRgb(128, 128, 128);
listSkin.iTextFocusColor = TRgb(68, 68, 68);
iListBox = CMltItemListBox::NewL(EMultiItem, this);
iListBox->SetSkin(listSkin);
}
//创建图标
void CYourContainer::SetupListIconsL()
{
TFileName fileName;
fileName.Copy(KMbmFilePath);
RArray<TInt> mbgArray;
mbgArray.Append(EMbmDesktopshowUnreadnews);
mbgArray.Append(EMbmDesktopshowUnreadnews_mask);
mbgArray.Append(EMbmDesktopshowHavereadnew);
mbgArray.Append(EMbmDesktopshowHavereadnew_mask);
iListBox->AddIcons(fileName, mbgArray);
mbgArray.Close();
}
void CYourContainer::SetupListItemsL()
{
TInt strIndex = R_NEWS_1;
HBufC* str = NULL;
TBuf<KMaxListItemStrLen> buf;
_LIT (KStrHeadRead, "1/"); // 1表示显示哪个图标,如果不用图表就不写
for (TInt i = 0; i< 10; i++)
{
//aString.Format(KStringHeader(), i);
str = iEikonEnv->AllocReadResourceAsDes16LC(strIndex);
buf.Append(KStrHeadRead);
buf.Append(*str);
buf.Append(_L("| 2009-7-15"));
iListBox->AddItemL(buf);
buf.Zero();
strIndex++;
CleanupStack::PopAndDestroy();
}
for (TInt i = 0; i< 8; i++)
{
buf.Append(_L("/Sport"));
buf.AppendNum(i);
iTabCtrl->AddItemL(buf);
buf.Zero();
}
}
另外不要忘记设置控件的区域, 返回控件指针及个数等, 其他一些列表的操作请参见MultiItemListBox.h