Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Blackberry-现场-水平对齐_Java_Blackberry_User Interface - Fatal编程技术网

Java Blackberry-现场-水平对齐

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

我想在水平管理器中将自定义按钮字段(屏幕截图上的星号)与中心对齐

HFM的定义

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

你能更明确地说明你想要达到的行为和你实际看到的是什么吗?截图很好!嗨,安东尼,我添加了一个截图!你能更明确地说明你想要达到的行为和你实际看到的是什么吗?截图很好!嗨,安东尼,我添加了一个截图!