【问题标题】:RichTextEdit with multicolored text?带有彩色文本的 RichTextEdit?
【发布时间】:2011-04-11 13:48:46
【问题描述】:

如何使用 RIM 4.5 API 创建包含多种颜色文本的RichTextEdit
例如我想创建一个RichTextEdit如下:

  • 文本是“Hello BB world”
  • “你好”应该是蓝色
  • “BB 世界”应该是红色
  • “BB” 应该是ITALIC
  • “你好”应该是BOLD

主要问题是获取颜色,而不是粗体和斜体。
我尝试过覆盖RichTextEdit.paint 函数,但这会格式化整个字符串的颜色,而不仅仅是它的子字符串!

这是我实现的代码,用于使文本变为粗体和斜体,并覆盖绘制以更改整个字符串的颜色:

public final class RichTextFieldSample extends UiApplication 
{ 
    public static void main(String[] args) 
    { 
        RichTextFieldSample theApp = new RichTextFieldSample(); 
        theApp.enterEventDispatcher(); 
    } 
    public RichTextFieldSample() 
    { 
        String richText = "This is how you create text with formatting!!!";
        Font fonts[] = new Font[3]; 
        int[] offset = new int[4]; 
        byte[] attribute = new byte[3]; 
        fonts[0] = Font.getDefault(); 
        fonts[1] = Font.getDefault().derive(Font.BOLD); 
        fonts[2] = Font.getDefault().derive(Font.BOLD | Font.ITALIC); 
        offset[0] = 0; 
        attribute[0] = 2; 
        offset[1] = 4; 
        attribute[1] = 0; 
        offset[2] = 33; 
        attribute[2] = 1; 
        offset[3] = richText.length(); 

        RichTextField rtField = new RichTextField 
          (richText, offset, attribute, fonts, 
           RichTextField.USE_TEXT_WIDTH) {
                protected void paint(Graphics graphics) {
                    graphics.clear();
                    graphics.setColor(0x0000FF);
                    super.paint(graphics);
                }
        };

        MainScreen mainScreen = new MainScreen(); 
        mainScreen.setTitle(new LabelField 
          ("RichTextFieldSample Sample", 
            LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH)); 
        mainScreen.add(rtField); 
        pushScreen(mainScreen); 
    } 
}

【问题讨论】:

  • 您能否发布设置字体粗体和斜体的示例代码?还要发布您的覆盖 RichTextEdit.paint 的代码。
  • 使用您要求的示例代码更新问题

标签: blackberry fonts colors rim-4.5 blackberry-os-v4.5


【解决方案1】:

不幸的是,这个问题没有简单的答案。根据this post,RichTextField 不支持多种颜色(尽管存在getForegroundColors 方法)。

可能可以扩展 RichTextField 以支持多种颜色,但由于需要大量工作,从头开始实现您自己的 Field 很可能会更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多