views:

118

answers:

1

I am currently working on my own implementation of a tab bar for a BlackBerry app, where each tab bar has a title that is right aligned (i.e. the last character in each should be the same distance from the right hand side of the screen). To work out where to draw the text I am using the following calculation:

screen width - advance of title - indent.

The font I am using is 'BBAlpha Sans' (height 28). Using BlackBerry OS 4.6 everything seems to be calculated properly and the text is aligned when I move between tabs, however I am finding that when I use OS 5.0 it doesn't calculate the advance properly and as a result the alignment is off by maybe 5 pixels or so. With the default font (also BBAlpha Sans, but height 24 - for OS 5.0 at least) it works fine in both versions.. but I don't necessarily always want to use the default font/size, so any ideas what could be going wrong? Is this a bug in the 5.0 API?

Thanks.


Code:


public class TitleBarBackground extends Background {

..

public void draw(Graphics graphics, XYRect rect) {
  graphics.pushRegion(rect);
  ..
  Font titleBarFont = FontFamily.forName("BBAlpha Sans").getFont(Font.PLAIN, 28);
  ...
  int textWidth = titleBarFont.getAdvance(title);
  graphics.drawText(title, rect.width - textWidth - TITLE_OFFSET, textYOffset);
  graphics.popContext();
}

..

}
+2  A: 

Are you calling graphics.setFont(titleBarFont) before graphics.drawText()?

Marc Novakowski
No! I feel stupid now, thanks for that, can't believe I missed it.
John