2009-05-22 39 views
4

如何仅在黑莓应用程序的文本框中更改特定文本的颜色?仅在黑莓文本框中更改特定文本的颜色

+0

你的意思是TextField? TextBox是J2ME的lcdui的一部分,你不能改变外观和感觉。 – Fostah 2009-05-22 15:42:45

+0

是的,我只是指TextField。 想要用红色指定一些文字的颜色,用黑色休息。 – iOSDev 2009-05-23 03:56:00

回答

4

由于Fostah在他的评论说,TextBox类是不改变的外观和感觉方面非常灵活。即使很多“Field”类的外观也很难改变。

但是,如果您有一定的灵活性,并且可以使用FieldField(如EditField(或其变体)而不是TextBox),那么它应该只是覆盖paint方法的情况。喜欢的东西:

protected void paint(Graphics graphics) { 
    graphics.setColor(Color.RED); 
    super.paint(graphics); 
} 
4

你检查过ActiveRichTextField吗?我自己只使用了RichTextField,但它看起来像ActiveRichTextField,除了字体格式&之外,还可以为文本区域指定颜色。它需要一点点设置才能让这些字段进行,但查看RichTextField的javadoc,它给出了一个很好的解释。

下面是一些示例代码:

int offsets[] = new int[]{0, 5, 11}; 
Font[] fonts = new Font[]{Font.getDefault(), Font.getDefault()}; 
int bg[] = new int[]{Color.WHITE, Color.WHITE}; 
int fg[] = new int[]{Color.BLACK, Color.GREEN}; 
byte attributes[] = new byte[]{0, 1}; 

add(new ActiveRichTextField("Hello world", offsets, attributes, fonts, fg, bg, 0)); 
6

很不幸,答案是推出自己 - 有没有可编辑文本字段的控制,可以让你改变字体颜色的。 @Mark Novakowski的回答是解决这个问题的标准方法,但会将所有文本更改为一种颜色。

如果您不担心支持Pearl式SureType键盘,那么您可以覆盖ActiveRichTextField上的keyChar并手动将字符添加到ActiveRichTextField中的文本中。

对于SureType字段,答案更糟糕 - 对于非Qwerty手机(Pearl系列),您没有低级别的SureType API(用于正确处理预测文本弹出窗口),因此您必须诉诸一些真正的诡计来获得一个完全自定义的文本字段在这些设备上正常运行。这可能归结为不得不在管理器中安排多个EditField,例如,一个EditField覆盖显示阅读(如Marks的答案)。这里的技巧将根据需要动态创建和添加文本字段。

是的,有时候RIM API可以使事情变得简单,而且几乎不可能。