【问题标题】:How to make the background black in Blackberry?如何在黑莓中使背景变黑?
【发布时间】:2012-03-09 22:30:05
【问题描述】:

我正在开发我的第一个 BlackBerry 应用程序,我想将背景更改为黑色,并将所有文本(BasicEditField 标签、Labels 等)更改为白色。

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

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

  • 整个屏幕应该是黑色
  • 所有文本标签都应为白色

非常感谢任何帮助!

【问题讨论】:

    标签: java blackberry java-me software-design


    【解决方案1】:

    此代码会将您的背景设置为黑色,并将编辑字段设置为白色

    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 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); 更改字体颜色。

    【讨论】:

    • 这真的很有帮助!非常感谢!
    • g.setColor(Color.WHITE);会将字体颜色更改为白色。
    • 删除 Field.USE_ALL_WIDTH |来自 VerticalFieldManager 的 Field.USE_ALL_HEIGHT。然后它就不会滚动了。
    【解决方案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 的文本颜色。

    【讨论】:

    • 是的,这种方法更简单、更简洁。我正在为 BlackBerry OS 6.0+ 开发,所以这应该不是问题。非常感谢您的回答!
    • 但是知道如何将EditFields 的文本颜色设置为白色吗?
    • 我昨天在搜索,除了子类化该字段之外找不到任何其他方法,我编辑了我的回复以包含更新的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2011-08-13
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多