I want to position my field at specified positions.
+3
A:
basically to set any field position amoung the manager, you shoud:
- override sublayout
- set layoutChild for each field in manager
- set setPositionChild for each field in manager
- use setExtend to size manager properly
Code of extanded manager:
class CustomVerticalManager extends VerticalFieldManager {
LabelField mText1 = new LabelField("top");
LabelField mText2 = new LabelField("bottom");
public CustomVerticalManager() {
add(mText1);
add(mText2);
}
public int getPreferredHeight() {
return Display.getHeight();
}
public int getPreferredWidth() {
return Display.getWidth();
}
protected void sublayout(int width, int height) {
width = getPreferredWidth();
height = getPreferredHeight();
int fieldWidth = mText1.getPreferredWidth();
int fieldHeight = mText1.getPreferredHeight();
layoutChild(mText1, fieldWidth, fieldHeight);
int xPos = (width - fieldWidth) >> 1;
int yPos = 0;
setPositionChild(mText1, xPos, yPos);
fieldWidth = mText2.getPreferredWidth();
fieldHeight = mText2.getPreferredHeight();
layoutChild(mText2, fieldWidth, fieldHeight);
xPos = (width - fieldWidth) >> 1;
yPos = height - fieldHeight;
setPositionChild(mText2, xPos, yPos);
setExtent(width, height);
}
}
Sample of use:
class Scr extends MainScreen {
CustomVerticalManager mManager = new CustomVerticalManager();
public Scr() {
add(mManager);
}
}
See also
Wireless - How to : Create a custom layout manager for a screen
Blackberry - fields layout animation
Max Gontar
2009-11-19 10:54:16
Good answer. RIM actually had a new class in the 5.0 API called AbsoluteFieldManager but for some reason removed it from the latest beta version.
Marc Novakowski
2009-11-19 22:16:30