【问题标题】:BlackBerry HorizontalFieldManager alignment黑莓 Horizo​​ntalFieldManager 对齐
【发布时间】:2011-05-10 03:24:00
【问题描述】:

我想横向显示两个位图,并在它们之间显示一个标签字段。 代码看似简单,但所有字段都添加在屏幕左侧。

HorizontalFieldManager hfm = new HorizontalFieldManager();

callbmp = new BitmapField(ei.getBitmap(),Field.FOCUSABLE |BitmapField.FIELD_LEFT);
LabelField NAME = new LabelField("mylable", LabelField.FIELD_HCENTER);
mailbmp = new BitmapField(mail.getBitmap(),Field.FOCUSABLE|BitmapField.FIELD_RIGHT);
hfm.add(callbmp);
hfm.add(NAME);
hfm.add(mailbmp);
add(hfm);

【问题讨论】:

    标签: blackberry


    【解决方案1】:
     Manager customManager = new Manager(0)
     {
         protected void sublayout(int width, int height) {
             setPositionChild(
                 getField(0), 
                 0, 
                 0);
             layoutChild(
                 getField(0), 
                 getField(0).getPreferredWidth(), 
                 getField(0).getPreferredHeight());
    
             setPositionChild(
                 getField(1), 
                 Graphics.getScreenWidth()/2 - getField(1).getPreferredWidth()/2, 
                 0);
             layoutChild(
                 getField(1), 
                 getField(1).getPreferredWidth(), 
                 getField(1).getPreferredHeight());    
    
             setPositionChild(
                 getField(2), 
                 Graphics.getScreenWidth() - getField(2).getPreferredWidth(), 
                 0);
             layoutChild(
                 getField(2), 
                 getField(2).getPreferredWidth(), 
                 getField(2).getPreferredHeight());    
    
             setExtent(width, height);
         }      
     };
    
     customManager.add(new BitmapField(Bitmap.getBitmapResource("image1.png")));
     customManager.add(new LabelField("Hello Alignment"));
     customManager.add(new BitmapField(Bitmap.getBitmapResource("image2.png")));
    

    【讨论】:

      【解决方案2】:

      HorizontalFieldManager 按添加顺序从左到右排列字段。水平布局的样式位被忽略。

      如果您希望左右和居中在一条水平线上,则需要一个自定义管理器。

      【讨论】:

      • 非常感谢你..你能发布一些代码我如何在自定义管理器中安排左、右和中心
      • 这将是对我时间的重大投资,而且只会伤害你——你需要自己学习如何做到这一点。 RIM 在上一次开发者大会上讨论了高级布局,其中包括一个执行此操作的管理器,但我现在找不到它。
      【解决方案3】:

      这应该是您的要求:

      只需减去您在水平字段管理器上添加的项目的宽度即可完成。默认情况下,leftButton 或您在 HFM 上添加的第一个项目将添加到左侧。然后您可以通过以下方式添加您的标签 (userName) 和 rightButton

      LabelField userName = new LabelField("MaheshBabu");
      HorizontalFieldManager horizontalBar = new HorizontalFieldManager(USE_ALL_WIDTH|Manager.NO_HORIZONTAL_SCROLL|Manager.NO_HORIZONTAL_SCROLLBAR);
      horizontalBar.setBackground(BackgroundFactory.createSolidBackground(Color.BLACK));
      
      rightButton.setMargin(0, 0, 0, Display.getWidth()-rightButton.getPreferredWidth()-leftButton.getPreferredWidth()-userName.getPreferredWidth());
      
      horizontalBar.add(leftButton);
      horizontalBar.add(userName);
      horizontalBar.add(rightButton);
      

      【讨论】:

        猜你喜欢
        • 2012-04-06
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-28
        • 2011-09-10
        相关资源
        最近更新 更多