当BlackBerry Java中的焦点改变时,我如何更改字段管理器的背景图像?

15

我是黑莓的新手并正在创建带选项的菜单。每个选项都包含位图图像和标签。

这是第一个菜单项的代码:

hmf1_vfm1 = new VerticalFieldManager(Field.FIELD_HCENTER |          VErrticalFieldManager.USE_ALL_WIDTH | VerticalFieldManager.FIELD_HCENTER |   VerticalFieldManager.FOCUSABLE | Field.FOCUSABLE)
{
 boolean isFocus;
//Bitmap bmp1 = Bitmap.getBitmapResource("mnu_tile1.png");
protected void sublayout(int maxWidth, int maxHeight)
 {
super.sublayout(100,125);
setExtent(100,125);
 }

protected void paint(Graphics g) {
try
{
   //g.setBackgroundColor(0x504A4B);
   //g.drawBitmap(0, 0, bmp1.getWidth(), bmp1.getHeight(), bmp1, 0, 0);
                    g.clear();
    Background bg = BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("mnu_tile1.png")); //mnu_tile1.png
                    this.setBackground(bg);
                    super.paint(g);
                }
                catch (IllegalArgumentException e) {
                    //SupportClass.showLog(TAG+" err 2 : "+e);
                }
            }

            protected void onFocus(int direction) {
                isFocus = true;
                super.onFocus(direction);
            }
            protected void onUnfocus() {
                isFocus = false;
                super.onUnfocus();
            }

            protected boolean navigationClick(int status, int time) {

                //SupportClass.showLog("New Order...navigationClick");
                return true;
            }
            public boolean isFocusable() {
                return true;
            }
            /*protected boolean touchEvent(net.rim.device.api.ui.TouchEvent message) {

                //SupportClass.showLog("New Order...touchEvent");
                return true;
            };*/
        };

通过这个vfm,位图和标签字段被添加了。顺便提一下。

BitmapField bfNO = new BitmapField(bmpNO,Field.FIELD_HCENTER | Field.FOCUSABLE)
        {
            protected boolean navigationClick(int status, int time) {
                SupportClass.showLog("bitmap...navigationClick");
                return true;
            }
            protected void paint(Graphics graphics) {
                //this.setBackground(BackgroundFactory.createSolidTransparentBackground(Color.BLACK,0));
                super.paint(graphics);
            }
        };

LabelField txtNO = new LabelField("New Order",LabelField.FIELD_HCENTER | Field.FOCUSABLE )
        {
            protected void paint(Graphics g) {
                g.setColor(Color.WHITE);
                //g.setBackgroundColor(0x00000000);
                super.paint(g);
            }
            protected boolean navigationClick(int status, int time) {
                SupportClass.showLog("lable...navigationClick");
                return true;
            }
        };
  • 我想集中在包含图像和标签的垂直领域管理器上,但在设置背景时我看不到背景。我猜测一些层覆盖在背景上。

  • 另外,我想将字段选择器颜色(蓝色背景)更改为透明。

  • 请告诉我我犯了什么错误。


你有检查这里的PictureBackgroundButtonField.java吗?!https://dev59.com/gF_Va4cB1Zd3GeqPT4B3#8967671 - alishaik786
这个问题是一年前提出的。如果楼主仍然对回答感兴趣,请更新问题,我会提供一些帮助。否则,回答这个问题似乎没有价值,因为代码是具体的,我怀疑其他更好的问题已经涵盖了可能提出的一般观点。 - Peter Strange
1个回答

0

嗨,请尝试使用invalidate()方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接