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

  • 文字是 “你好BB世界”
  • “你好” 应该 蓝色的
  • “ 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); 
    } 
}
有帮助吗?

解决方案

不幸的是,对此没有简单的回答。根据 这个帖子, ,Richtextfield不支持多种颜色(尽管存在 getForegroundColors 方法)。

可能会扩展RichTextfield以支持多种颜色,但是有了必要的工作量,很可能会更容易实施自己的 Field 从头开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top