【问题标题】:Change color of specific text only in text box of BlackBerry仅在黑莓的文本框中更改特定文本的颜色
【发布时间】:2009-05-22 13:19:12
【问题描述】:

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

【问题讨论】:

  • 你是说TextField吗? TextBox 是 J2ME 的 lcdui 的一部分,您无法更改其外观。
  • 是的,我的意思只是 TextField。想用红色指定一些文本,黑色休息....

标签: user-interface blackberry java-me


【解决方案1】:

不幸的是,答案是您自己选择 - 没有可编辑的文本字段控件可以让您更改字体颜色。 @Mark Novakowski 的答案是解决此问题的标准方法,但会将所有文本更改为一种颜色。

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

对于 SureType 字段,答案更糟糕 - 您没有对非 Qwerty 手机(Pearl 系列)的 SureType API(用于正确处理预测文本弹出窗口)的低级别访问权限,因此您必须求助一些真正的技巧来获得完全自定义的文本字段以在这些设备上正常运行。它可能归结为必须在经理中安排多个 EditField,例如一个 EditField 被覆盖以显示已读(如 Marks 的回答)。诀窍是根据需要动态创建和添加文本字段。

是的,有时 RIM API 使简单的事情变得容易,而困难的事情几乎不可能。

【讨论】:

    【解决方案2】:

    正如 Fostah 在他的评论中所说,TextBox 类在更改外观方面不是很灵活。甚至许多“Field”类的外观和感觉也很难改变。

    但是,如果您有一定的灵活性并且可以使用诸如 EditField(或其变体)之类的字段而不是 TextBox,那么它应该只是覆盖绘制方法的情况。比如:

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

    【讨论】:

      【解决方案3】:

      您检查过 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));
      

      【讨论】:

      • 我尝试过使用 ActiveRichTextField。它给了我想要的完美的东西。但是上面的文本字段不允许我编辑文本...我尝试将此 ActiveRichTextField 的属性设置为 EDITABLE,但它没有工作...
      • Jazz,您希望用户可以编辑该字段吗?还是你?并且您希望这些用户输入的文本中的一些是红色的??
      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多