设备, 软件 版本: S60 3rd Edition and FP1
Nokia E70, Nokia E90, Nokia N93, Nokia N95
- 详细描述
Command Button Array(CBA)一般位于S60手机屏幕的最下方,如果手机支持横屏竖屏切换的话,那CBA的位置就不固定了(根据屏幕而定)。当S60 UI中的控制面板被正确放置后,可缩放程序应该知道CBA键的正确位置。
- 解决方案
在有些手机中(如Nokia E70, Nokia E90, Nokia N93, Nokia N95),在横屏模式下功能键将在屏幕左边或右边出现。如果程序需要基于方位对UI(功能键位置)做调整,可以通过
AknLayoutUtils::CbaLocation();
来获取CBA位置。
我们将会得到下列放回值:
enum TAknCbaLocation
{
EAknCbaLocationBottom, // landscape and portrait
EAknCbaLocationRight, // only landscape
EAknCbaLocationLeft // only landscape
};
当CBA定位在屏幕下部时,OK/Options键总是定义在左边,而相反的Cancel/Back键总是定义在右边。
当CBA键在屏幕两端时,大部分设备的左功能键总是在下部,但也有列外,如Nokia E90,他就是在上部的位置。
没有API可以直接解决功能键的顺序问题,但可以通过如下方法来监测出按键的位置:
TBool IsOptionsButtonOnTop()
{
CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
if( !cba )
{
return EFalse;
}
// Assumes that CBA has Options and Exit commands
CCoeControl* options = cba->ControlOrNull( EAknSoftkeyOptions );
CCoeControl* exit = cba->ControlOrNull( EAknSoftkeyExit );
if( options && exit )
{
if( options->Position().iY < exit->Position().iY )
{
return ETrue;
}
}
return EFalse;
}
Related Wiki Articles
No related wiki articles found