×
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.
180 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×