我正在开发一个应用程序,我需要在HorizontalFieldManage
中设置两个按钮。其中一个 Bitmap
应保持左侧,另一个 LabelField
应保持水平居中。在这里,我已经尝试了很多次,但无法在左侧设置第一个 Bitmap
所以你能帮我解决这个问题吗..
这是我的代码::
VerticalFieldManager VFM = new VerticalFieldManager(USE_ALL_WIDTH){
public void paint(Graphics g) {
g.setBackgroundColor(Color.WHITE);
g.clear();
super.paint(g);
}
};
HorizontalFieldManager HFM = new HorizontalFieldManager(FIELD_HCENTER){
public void paint(Graphics g) {
g.setBackgroundColor(Color.WHITE);
g.clear();
super.paint(g);
}
};
Bitmap logom1;
logom1 = Bitmap.getBitmapResource("logo48X48.png");
BitmapField imgField = new BitmapField(logom1,Field.FIELD_LEFT);
LabelField RegistrationLbl = new LabelField("Registration",FIELD_HCENTER | FIELD_BOTTOM);
FontFamily fontFamily[] = FontFamily.getFontFamilies();
Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 20);
font = fontFamily[1].getFont(Font.BOLD, 25);
RegistrationLbl.setFont(font);
HFM.add(imgField);
HFM.add(RegistrationLbl);
VFM.add(HFM);
add(VFM);
最佳答案
Signare 的一般解决方案可以工作,但左边距不太正确。在将标签添加到 HFM
对象之前,您需要添加的唯一调用是这些(为了清楚起见,分为两行):
int labelX = (Display.getWidth() - RegistrationLbl.getPreferredWidth()) / 2;
RegistrationLbl.setMargin(0, 0, 0, labelX - imgField.getPreferredWidth());
这假设它所在的类 (Manager
) 占据整个屏幕宽度 (Display.getWidth()
)。
Read this for a good description of what margin is .
另外,请注意 setMargin()
在 6.0 之前的 API 中没有记录,但我相信它实际上可以在操作系统 4.5 左右使用(但是没有记录)。
编辑:顺便说一下,您正在分配font
对象,然后立即将其分配给其他对象。这看起来也不正确,尽管它不会影响标签居中的问题。
另一个编辑:如 Rupak 的评论所示,此代码仅在您有固定方向显示时才有效。如果标签应该在设备方向变化时再次居中,那么您需要的不仅仅是这个。如果需要,请对问题添加更多说明,有人会提供帮助!
关于java - 黑莓对齐的布局设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789856/