Listfield会截断多余的行,并且仅限于黑莓中的图像大小

时间:2014-08-22 13:56:36

标签: blackberry

我有一个应用程序,我下载图像和数据并在ListField上渲染它们。图像显示在左侧,文本显示在右侧的行中。 要显示的行显示名称,电话号码等信息,它们非常多。这里的问题是listfield只显示三行(占用与左边图像大小相同的高度),其余5行不显示。我怎么做才能使行高不限于图像的高度?目标操作系统从BB 0S 5开始。

绘制listrow代码是:

           public void drawListRow(ListField list,Graphics g,int index,int y,int w)
            {



                Items itemToDraw=(Items)this.get(list,index);

                String name=itemToDraw.getName();
                String desc=itemToDraw.getDescription();
                Bitmap bmp=itemToDraw.getBmp();

                g.drawBitmap(0,y,bmp.getWidth(),bmp.getHeight(),bmp,0,0);
                 int ypos=12+y;
                 int wd=bmp.getWidth();
                 int h=bmp.getHeight();
                 int fht=this.getFont().getHeight();
                 int xpos=wd+3;
                 g.drawText("Name: "+itemToDraw._itemName,xpos,ypos,DrawStyle.HCENTER,w-wd);
                 ypos+=fht;

                 g.drawText("Number: "+itemToDraw._Number,xpos,ypos,DrawStyle.ELLIPSIS,w-wd);
                   ypos+=fht;
                   g.drawText("Company: "+itemToDraw._company,xpos,ypos);
                      ypos+=fht;
                      g.drawText("Year: "+itemToDraw._year,xpos,ypos);
                      ypos+=fht;

                      g.drawText("Occupation "+itemToDraw._occupation,xpos,ypos);
                      ypos+=fht;
                      g.drawText("Employer: "+itemToDraw._employer,xpos,ypos);
                      ypos+=fht;
                      g.drawText("Department: "+itemToDraw._dept,xpos,ypos);
                      ypos+=fht;
                      g.drawText("Location: "+itemToDraw._location,xpos,ypos);
                      ypos+=fht;
                       g.drawText("Email: "+itemToDraw._email,xpos,ypos);
                      ypos+=fht;
                      g.drawText("Phone: "+itemToDraw._phone,xpos,ypos);
                      ypos+=fht;


                      g.drawText("Website: "+itemToDraw._website,xpos,ypos);









                int drawColor=Color.BLACK;


                        g.setColor(drawColor);

                       int yPos=y+list.getRowHeight()-5;
                       g.drawLine(0,yPos,w,yPos);
                    }

1 个答案:

答案 0 :(得分:0)

drawListRow调用绘制每个列表项,它不会影响显示列表项的数量。

当您填充了要显示的项目列表/数组时,请调用名称为setSize(int itemsQty)ListField实例方法

确保传递给itemsQty方法的setSize具有正确的值。

此外,请注意,您可以缩小大图像,使列表看起来更好。

检查Bitmap classscaleXXX方法。