Java Blackberry-现场-水平对齐
我想在水平管理器中将自定义按钮字段(屏幕截图上的星号)与中心对齐 HFM的定义Java Blackberry-现场-水平对齐,java,blackberry,user-interface,Java,Blackberry,User Interface,我想在水平管理器中将自定义按钮字段(屏幕截图上的星号)与中心对齐 HFM的定义 final HorizontalFieldManager _navigation = new HorizontalFieldManager(HorizontalFieldManager.NO_VERTICAL_SCROLL | HorizontalFieldManager.FIELD_VCENTER | Field.USE_ALL_WIDTH) { protected void paint(Graphic
final HorizontalFieldManager _navigation = new HorizontalFieldManager(HorizontalFieldManager.NO_VERTICAL_SCROLL | HorizontalFieldManager.FIELD_VCENTER | Field.USE_ALL_WIDTH)
{
protected void paint(Graphics graphics)
{
graphics.setGlobalAlpha(100);
int[] xInds = new int[]{0, getExtent().width, getExtent().width, 0};
int[] yInds = new int[]{0, 0, getExtent().height, getExtent().height};
final int[] cols = new int[]{Color.WHITE, Color.WHITE, color_computacenter_light_blue, color_computacenter_light_blue};
graphics.drawShadedFilledPath(xInds, yInds, null, cols, null);
super.paint(graphics);
}
protected void sublayout(int maxWidth, int maxHeight)
{
super.sublayout(maxWidth, maxHeight);
setExtent(maxWidth, navigation_vertical_manager_height);
}
};
自定义字段(部分)
[……]
有什么想法吗,我做错了什么
谢谢 我尚未测试此代码,但我怀疑您的问题出在字段的布局方法上:
protected void layout(int maxWidth, int maxHeight)
{
setExtent(maxWidth, maxHeight);
// setExtent(Math.min(weight, maxWidth), Math.min(height, maxHeight));
}
你评论那句话有什么原因吗?我认为现在的情况是,自定义字段占据了整个宽度,在绘制方法中,您在最左边绘制位图,使其看起来像字段是左对齐的。如果您取消对该行的注释,并在构建字段时添加field.field\u HCENTER的字段样式位,它应该可以工作
或者,您可以保持布局不变,只需将绘制方法中的线条更改为以下内容,即可将位图居中绘制
graphics.drawBitmap((this.getWidth()-img.getWidth())/2, 0 , img.getWidth(), img.getHeight(), img, 0, 0);
该区域仍将占据整个宽度,但图像将居中。这可能会导致触摸屏设备出现意外行为(即风暴)。我尚未测试此代码,但我怀疑您的问题在于您所在领域的布局方法:
protected void layout(int maxWidth, int maxHeight)
{
setExtent(maxWidth, maxHeight);
// setExtent(Math.min(weight, maxWidth), Math.min(height, maxHeight));
}
你评论那句话有什么原因吗?我认为现在的情况是,自定义字段占据了整个宽度,在绘制方法中,您在最左边绘制位图,使其看起来像字段是左对齐的。如果您取消对该行的注释,并在构建字段时添加field.field\u HCENTER的字段样式位,它应该可以工作
或者,您可以保持布局不变,只需将绘制方法中的线条更改为以下内容,即可将位图居中绘制
graphics.drawBitmap((this.getWidth()-img.getWidth())/2, 0 , img.getWidth(), img.getHeight(), img, 0, 0);
该区域仍将占据整个宽度,但图像将居中。这可能会导致触摸屏设备出现意外行为(即风暴)。事实上,这很简单。您必须使用HorizontalFieldManager和DrawStyle.Center。 下面是代码片段(如果您还没有解决它): 好心,
Hrvoje实际上,它很简单。您必须使用HorizontalFieldManager和DrawStyle.Center。 下面是代码片段(如果您还没有解决它): 好心,
Hrvoje你能更明确地说明你想要达到的行为和你实际看到的是什么吗?截图很好!嗨,安东尼,我添加了一个截图!你能更明确地说明你想要达到的行为和你实际看到的是什么吗?截图很好!嗨,安东尼,我添加了一个截图!