Il secondo metodo è un approccio orribile (scherzare con l'altezza di VerticalfieldManager ti porterà molti problemi).
Prova di nuovo il primo metodo, ma questa volta chiama super.layout
primo:
DateField dtf = new DateField(label, defaultDateTime, DateField.DATE_TIME | DrawStyle.LEFT | DrawStyle.TOP | Field.FOCUSABLE | Field.READONLY )
{
protected void layout(int width, int height) {
super.layout(width, height);
Bitmap bmp = UIElements.GetBitmap(UIElements.IMG_DROPDOWN_BG, true);
width = bmp.getWidth();
height = bmp.getHeight();
super.setExtent(width, height);
}
};
Si noti che usando questo approccio potresti anche ottenere problemi, poiché stai preparando ciecamente un metodo senza considerare il resto della classe. Per fare questo in modo sicuro, dovresti avere accesso alla fonte della classe genitore e no.
Suggerirei di estendere HorizontalFieldManager
(oltrepassare sublayout
) per avere un'altezza fissa (mai VFM perché lo scorrimento va nella stessa direzione che stai cercando di fare fissate). Quindi posizionare all'interno di un campo di data regolare che utilizza tutta l'altezza disponibile (passa il flag Field.USE_ALL_HEIGHT
nel costruttore).
Ulteriori informazioni:http://docs.blackberry.com/es-es/developers/delirables/29251/determining_the_dimensions_of_a_field_1578864_11.jsp