Symbian学习笔记(12)

系统
在symbian中的tabgroup的使用比较常见,在多视图的框架中就提供了一些代码。
在symbian中的tabgroup的使用比较常见,在多视图的框架中就提供了一些代码。

  symbian把整个屏幕分成三大块上面的状态面板(StatusPane)、中间的主面板和下面的控制面板(ControlPane)。控制面板中就是那个CBA的东西,暂且不管。

  状态面板中可以让我们去操作的包括:标题栏(可以修改显示标题,缺省是应用程序名称)、上下文栏(就是大图标的位置),还有一个就是导航栏了(用来显示TabGroup或者一些文字信息比如日期、编辑模式之类的)。

  在代码中操作状态栏的方法并不复杂,在AppUi中有一个StatusPane()可以轻松的得到状态栏的引用。

 

iNaviPane
  = (CAknNavigationControlContainer*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidNavi));   

iDecoratedTabGroup = naviPane->ResourceDecorator();

if (iDecoratedTabGroup)...{
  iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
  iTabGroup->SetObserver( this );
}
 

  上面的代码是用来从资源中读取TabGroup的方法,所以需要在rss中增加如下的描述:

 

RESOURCE EIK_APP_INFO
    {
    status_pane = r_app_status_pane;
    }

RESOURCE STATUS_PANE_APP_MODEL r_app_status_pane
    {
    panes=
        {
        SPANE_PANE
            {
            id = EEikStatusPaneUidNavi;
            type = EAknCtNaviPane;
            resource = r_navi_decorator;
            }
        };
    }

RESOURCE NAVI_DECORATOR r_navi_decorator
    {
    type = ENaviDecoratorControlTabGroup;
    control = TAB_GROUP
        {
        tab_width = EAknTabWidthWithTwoTabs;
        active = 0;
        tabs = {
            TAB
                {
                id = EUniNewsTabSZ;
                txt = qtn_tab_title_sz;
                },
            TAB
                {
                id = EUniNewsTabGJ;
                txt = qtn_tab_title_gj;
                }
            };
        };
    }

  在代码中设置了TabGroup的观察者是this,说明当前的AppUi应该实现接口

        MAknTabObserver的方法void TabChangedL(TInt aIndex)。

  不过,我觉得TabGroup应该是动态生成的比较常用,所以可以不用在rss中描述这些东西,在代码中去创建就好了:

 

iTabGroup = CAknTabGroup::NewL(*iNaviPane);
iTabGroup->SetTabFixedWidthL(EAknTabWidthWithTwoTabs);
iTabGroup->SetObserver(this);
           
RArray<TNewsChannel> *rc=iChannelHandler->GetChannels();
for(TInt i=0;i<rc->Count();i++)...{                  
  iTabGroup->AddTabL((*rc)[i].id,*((*rc)[i].title));      
}
                       
iDecoratedTabGroup=CAknNavigationDecorator::NewL( iNaviPane, iTabGroup, CAknNavigationDecorator::ETabGroup );
iNaviPane->PushL( *iDecoratedTabGroup );
iTabGroup->SetActiveTabByIndex(0);

  这样就OK了。

【编辑推荐】

  1. Symbian每6个月发布一款新开源操作系统
  2. 微软建WindowsMarketplace 完善智能机平台
  3. 大力模仿Android 传微软WM6.5可装插件
责任编辑:庞桂玉 来源: it168
相关推荐

2009-04-12 09:00:08

Symbian诺基亚移动OS

2009-04-12 09:02:32

Symbian诺基亚移动OS

2009-04-12 08:59:05

Symbian诺基亚移动OS

2009-04-12 09:01:05

Symbian诺基亚移动OS

2009-04-12 09:06:00

Symbian诺基亚移动OS

2009-04-12 09:03:50

Symbian诺基亚移动OS

2009-04-12 08:55:18

Symbian诺基亚移动OS

2009-04-12 08:36:09

Symbian诺基亚移动OS

2009-04-12 08:51:50

Symbian诺基亚移动OS

2009-04-12 09:07:17

Symbian诺基亚移动OS

2009-04-12 08:45:32

Symbian诺基亚移动OS

2009-04-12 08:48:47

Symbian诺基亚移动OS

2009-04-12 08:50:08

Symbian诺基亚移动OS

2009-04-12 08:46:43

Symbian诺基亚移动OS

2009-04-12 08:52:52

Symbian诺基亚移动OS

2010-10-27 13:14:24

Symbian

2012-05-24 09:38:08

Symbian

2010-07-12 09:34:59

Symbian开发

2011-04-07 09:39:26

Symbian诺基亚智能手机

2010-07-02 09:54:32

Symbian开发
点赞
收藏

51CTO技术栈公众号