2011-05-30 147 views
1

嗨开发人员我有一个透明背景(位图)的屏幕。我有一个放置在它上面的列表字段,但问题是透明背景没有显示前一个屏幕,而是显示带有列表字段的白色屏幕。不显示透明背景?

public class IndexScreen extends MainScreen implements ListFieldCallback { 

    private Vector rows; 
    ListField listItems; 
    int listItem; 
    int listFieldIndex = -1; 
    TableRowManager row; 
    Bitmap indexBox = Bitmap.getBitmapResource("res/screens/Index_Box.png"); 

    public IndexScreen() { 
     listItems = new ListField() { 
     listItems.setRowHeight(20); 
     listItems.setCallback(this); 
     rows = new Vector(); 

     listItems.setSize(rows.size()); 
     _listVfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL) { 

      public void paint(Graphics g) { 
       g.drawBitmap(0, 0, UIinitialize.screenWidth, 
          UIinitialize.screenHeight, indexBox, 0, 0); 

       super.paint(g); 
      } 

      protected boolean navigationMovement(int dx, int dy, int status, 
        int time) { 
       return super.navigationMovement(dx, dy, status, time); 
      } 
      protected void sublayout(int maxWidth, int maxHeight) { 

       layoutChild(listItems, maxWidth, maxHeight); 
       setPositionChild(listItems, 5, 0);  
        setExtent(maxWidth, 255); 
      } 
     }; 
     _listVfm.add(listItems); 
     add(_listVfm); 

     UiApplication.getUiApplication().invokeLater(new Runnable() { 
      public void run() { 
       listItems.invalidate(); 
      } 
     }, 500, true); 

    } 

    public void drawListRow(ListField listField, Graphics graphics, int index, 
      int y, int width) { 
     TableRowManager rowManager = (TableRowManager) rows.elementAt(index); 
     rowManager.drawRow(graphics, 0, y, width, listItems.getRowHeight()); 
    } 

    class TableRowManager extends Manager { 
     public TableRowManager() { 
      super(0); 
     } 

     public void drawRow(Graphics g, int x, int y, int width, int height) { 
      layout(width, 250); 
      setPosition(x, y); 
      g.pushRegion(getExtent()); 
      subpaint(g); 
      g.setColor(0x00CACACA);  
      g.popContext(); 
     } 
     protected void sublayout(int width, int height) { 
      int preferredWidth = getPreferredWidth(); 
      Field field = getField(0); 
      layoutChild(field, preferredWidth, height); 
      setPositionChild(field, 0, 0); 
      setExtent(width, height); 

     } 
     public int getPreferredWidth() { 
      return listItems.getWidth(); 
     } 
     public int getPreferredHeight() { 
      return listItems.getRowHeight(); 
     } 
    } 

    public Object get(ListField listField, int index) { 
     return null; 
    } 
    public int getPreferredWidth(ListField listField) { 
     return 0; 
    } 
    public int indexOfList(ListField listField, String prefix, int start) { 
     return 0; 
    } 
} 

上面的代码,我using.How我可以实现查看透明background.Can有人请帮助me.Thanks代码的一部分。

回答

1

MainScreen包含自己的非透明背景。如果您想要透明/半透明背景,则必须扩展屏幕。

0

我在应用程序中使用的另一种选择是使用FullScreen而不是MainScreen。 FullScreen允许透明背景。如果您使用的是setStatus或setTitle,则必须找到另一种显示该数据的方法,但其他方式非常相似。

但是,从您的代码扩展屏幕而不是MainScreen可能会更合适。