Horizontally centering fields in a vertical field manager

后端 未结 3 951
挽巷
挽巷 2020-12-10 17:48
vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
    vfm.add(new LabelField(\"horizontally centered...\",Field.FIELD_HCENTER | LabelField.FOCUSABLE));
    vf         


        
相关标签:
3条回答
  • 2020-12-10 18:27

    Check this code snippet. It doesn't have to be that compicated.

    public final class CenterScreen extends MainScreen {
        public CenterScreen() {        
            LabelField lbl1 = new LabelField("First and Foremost", Field.FIELD_HCENTER);
            lbl1.setBorder(BorderFactory.createRoundedBorder(new XYEdges(10, 10, 10, 10),
                Color.BLUE, Border.STYLE_SOLID));
    
            LabelField lbl2 = new LabelField("Second", Field.FIELD_HCENTER);
            lbl2.setBorder(BorderFactory.createRoundedBorder(new XYEdges(10, 10, 10, 10),
                Color.RED, Border.STYLE_SOLID));
    
            LabelField lbl3 = new LabelField("Last but not least", Field.FIELD_HCENTER);
            lbl3.setBorder(BorderFactory.createRoundedBorder(new XYEdges(10, 10, 10, 10),
                Color.GREEN, Border.STYLE_SOLID));
    
            VerticalFieldManager vfm = new VerticalFieldManager(Field.USE_ALL_WIDTH);        
            vfm.add(lbl1);
            vfm.add(lbl2);
            vfm.add(lbl3);
            add(vfm);    
        }
    }
    


    Resulting in enter image description here

    0 讨论(0)
  • 2020-12-10 18:42

    Here are the rules for alignment on BlackBerry:

    • A HorizontalFieldManager can only align the fields within it vertically. So when creating those fields only the following styles (also known as alignment bits) have any effect: FIELD_TOP, FIELD_VCENTER, FIELD_BOTTOM. e.g. new LabelField("My field", Field.Field_VCENTER)

    HorizontalFieldManager example

    HorizontalFieldManager example

    • A VerticalFieldManager can only align the fields within it horizontally. Only the following styles have any effect: FIELD_LEFT, FIELD_HCENTER, FIELD_RIGHT.

    VerticalFieldManager example

    enter image description here

    Aligning both horizontally and vertically example

    Here's an example which aligns a button in the center of the screen both vertically and horizontally:

    public class AlignmentScreen extends MainScreen{
    
            public AlignmentScreen(){
    
                //A MainScreen has a VerticalFieldManager to lay out its 
                //fields from top to bottom, the style bits here tell it
                //to span the whole width of the screen and not to scroll
                super(Manager.USE_ALL_WIDTH | Manager.NO_VERTICAL_SCROLL);
    
                //Set the VerticalFieldManager to have a GREEN background
                getMainManager().setBackground(BackgroundFactory.createSolidBackground(0xFF00FF00));
    
                //Create a new HorizontalFieldManager which is centered horizontally
                //and spans the whole height of the containing VerticalFieldManager
                HorizontalFieldManager hfm = new HorizontalFieldManager(Field.FIELD_HCENTER | Manager.USE_ALL_HEIGHT);
    
                //Set the HorizontalFieldManager's background to RED
                hfm.setBackground(BackgroundFactory.createSolidBackground(0xFFFF0000));
    
                //Create a button and center align it vertically
                ButtonField button = new ButtonField("Test", Field.FIELD_VCENTER);
    
                //Add the button to the HoriztonalFieldManager
                hfm.add(button);
    
                //Add the HorizontalFieldManager to the VerticalFieldManager
                add(hfm);
            }
        }
    

    The screen should look like this:

    Centering vertically and horizontally

    You should be able to modify the above to get your fields to align the way you want.

    0 讨论(0)
  • 2020-12-10 18:42

    First add your Field to a HorizontalFieldManager (say hfm), then add that hfm to the vfm, I hope this will solve your problem:

    VerticalFieldManager vfm = new VerticalFieldManager();
    HorizontalFieldManager hfm = new HorizontalFieldManager(Manager.FIELD_HCENTER);
    hfm.add(new LabelField("My Label"));
    add(hfm);
    

    See the following link to find An effective way of aligning fields in a VerticalFieldManager

    0 讨论(0)
提交回复
热议问题