×
Namespaces

Variants
Actions

如何更改标签(Label)的颜色方案

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

兼容于
平台: S60 2nd Edition FP3
S60 2nd Edition FP3

文章
User:Davey 2 在 23 Oct 2007 创建
最后由 hamishwillee 在 30 May 2013 编辑

标签(CEikLabel)是常用的一个简单控件,它常常用来显示文本,在默认情况下,标签都是白底黑字的(如下图),而有些情况下又希望改变标签的文字颜色或者标签背景的颜色,然而在SDK的CEikLabel类的成员函数中又没有类似SetColor()的函数。本文将告诉你如何通过OverrideColorL()和SetEmphasis()这两个函数来设置文字和背景的颜色。

White.PNG

  1. 如果仅仅是改变文字的颜色,需要向OverrideColorL()函数传入EColorLabelTextEmphasis和文字的颜色(如KRgbBlue)来设置文字颜色,然后通过带CEikLabel::EpartialEmphasis参数的SetEmphasis()函数来应用设置。应用设置以后效果如下图,代码如下:
    iLabel = new (ELeave) CEikLabel;
    iLabel->SetContainerWindowL(*this);
    HBufC* labelText;
    labelText = StringLoader::LoadLC(R_LABEL_TEXT); // 把 labelText 推入清理栈
    iLabel->SetTextL(*labelText);
    CleanupStack::PopAndDestroy(labelText);
    // 把标签文字颜色设为蓝色
    iLabel->OverrideColorL( EColorLabelTextEmphasis, KRgbBlue );
    iLabel->SetEmphasis( CEikLabel::EPartialEmphasis ); //应用设置
    Fontcolor.PNG
  2. 如果需要同时改变文字和背景的颜色,则除了设置文字颜色还要使用OverrideColorL()设置背景色,但是这时传入的参数是EColorLabelHighlightFullEmphasis和背景的颜色,最后使用带CEikLabel::EFullEmphasis参数的SetEmphasis()函数应用设置。效果如下图所示,相关的代码如下:
    // 设置文字颜色是黄色,背景颜色是绿色
    iLabel->OverrideColorL( EColorLabelTextEmphasis, KRgbYellow );
    iLabel->OverrideColorL( EColorLabelHighlightFullEmphasis, KRgbGreen );
    iLabel->SetEmphasis( CEikLabel::EFullEmphasis );
    Fontandbackground.PNG


图示的例子代码到如下地址下载: [1]


This page was last modified on 30 May 2013, at 07:41.
152 page views in the last 30 days.
×