vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
vfm.add(new LabelField("horizontally centered...",Field.FIELD_HCENTER | LabelField.FOCUSABLE));
vfm.add(new LabelField("horizontally centered...",Field.FIELD_HCENTER | LabelField.USE_ALL_WIDTH | LabelField.FOCUSABLE));
add(vfm);
Why can't I get my fields to be horizontally aligned. I have tried different combinations but can't get a single labelfield to be centered. If I add a second field below with USE_ALL_WIDTH then the first field gets centered.
I don't know what the proper way of doing it!
EDIT:
Following the link provided below, I tried doing:
vfm = new VerticalFieldManager(Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT){
protected void sublayout( int width, int height ) {
super.sublayout( width, height );
width = getWidth();
height = getHeight();
for (int i = 0;i < this.getFieldCount() - 1; i++)
{
System.out.println("field:" + i);
Field field = this.getField(i);
//this positions the item in the middle of the manager
int x = (int)((width - field.getWidth()) * 0.50);
setPositionChild(field, x, field.getTop());
}
}
};
vfm.add(new LabelField("Facebook"));
add(vfm);
The problem is that I'm not getting any fields. How am I supposed to implement it?
Here are the rules for alignment on BlackBerry:
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
VerticalFieldManager
can only align the fields within it horizontally. Only the following styles have any effect: FIELD_LEFT, FIELD_HCENTER, FIELD_RIGHT.VerticalFieldManager example
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:
You should be able to modify the above to get your fields to align the way you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With