2012-03-08 173 views
1

我正在开发我的第一个黑莓应用程序,并且我想将背景更改为黑色和所有文本(在BasicEditField标签中,Label s等)白色。如何让黑莓背景变黑?

我尝试在VerticalFieldManager上使用setBackground(Background bg)方法,但它只是将屏幕变黑,就我的组件而言。也就是说,如果我有只有两个按钮一个在另一个下面,背景只有黑色,直到按钮的结束。所以当屏幕上的组件较少​​时,屏幕会变成黑色半白色。

有什么办法,我可以实现我想要的行为:

  • 整个画面应该是
  • 所有的文本标签应该是白色

任何帮助非常感谢!

回答

4

此代码将设置你的背景为黑色,EditField中为白色

VerticalFieldManager backg = new VerticalFieldManager(Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT){ 
public void paint(Graphics graphics) { 
graphics.setBackgroundColor(Color.BLACK); 
graphics.clear(); 
super.paint(graphics); 
    } 
}; 

现在添加EditField中为

EditField edit= new EditField("", "", 100, Field.FOCUSABLE){ 
protected void paintBackground(Graphics g) { 
      g.setBackgroundColor(Color.WHITE); 
      g.clear(); 
     } 



backg.add(edit); 
add(backg); 

使用g.setColor(Color.WHITE);改变字体颜色。

+0

真的有帮助!非常感谢! – Roshnal 2012-03-08 14:35:17

+0

然后接受答案.... – Signare 2012-03-09 04:22:35

+0

g.setColor(Color.WHITE);会将字体颜色更改为白色。 – Signare 2012-03-09 06:43:20

2

Signare的版本适用于旧版本,但是OS 4.6还有另一种选择。查看net.rim.device.api.ui.decor包中的课程。

我用这个来改变屏幕的背景对我的计划之一:

public class MyScreen extends MainScreen { 

    MyScreen() { 

     Background screenColor = BackgroundFactory.createSolidBackground(Color.Black); 
     Manager backg= getMainManager(); 
     backg.setBackground(screenColor); 

     EditField edit = new EditField("", "", 100, Field.FOCUSABLE){ 
      protected void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }; 
     Background fieldColor = BackgroundFactory.createSolidBackground(Color.BLACK); 
     edit.setBackground(fieldColor); 

     backg.add(edit); 
    } 
} 

你的所有领域都.setBackround().setBorder()方法,让您做一些自定义不错。我发现这种方法比仅仅为了改变背景颜色而继承我的所有组件更简单。不幸的是,你仍然需要改变文字颜色EditFieldLabelField

+0

是的,这种方法更容易和整洁。我正在开发BlackBerry OS 6.0+,所以它不应该是一个问题。非常感谢您的回答! – Roshnal 2012-03-08 16:39:06

+1

但任何想法如何将'EditField'的文本颜色设置为** White **? – Roshnal 2012-03-08 16:40:03

+0

我昨天正在搜索,除了子类化字段外,我找不到任何其他方法,我编辑了我的响应以包含更新后的代码。 – 2012-03-09 14:25:39