2013-10-23 141 views
0

在下面的代碼scrollview是不工作的所有是這種形式labelfields每當我在上面的代碼中添加一個buttonfield其滾動,但是當我刪除它不工作,所以我的問題是如何滾動當表單中只有標籤字段時的屏幕?垂直scrollview不工作在黑莓

final VerticalFieldManager mainreportfractionsodiumvfm = new VerticalFieldManager(
      Manager.USE_ALL_HEIGHT | Manager.VERTICAL_SCROLL); 

    // For action bar 
    final HorizontalFieldManager vfm_r = new HorizontalFieldManager(
      Field.USE_ALL_WIDTH) { 
     // Applying background color for that Manager 
     public void paint(Graphics graphics) { 
      graphics.setColor(Color.WHITE); 
      graphics.setBackgroundColor(0Xde3f39); 
      graphics.clear(); 
      super.paint(graphics); 
     } 

     // Placing the Fields 

     protected void sublayout(int width, int height) { 

      setPositionChild(getField(0), 0, 0); 
      layoutChild(getField(0), getField(0).getPreferredWidth(), 
        getField(0).getPreferredHeight()); 

      setPositionChild(getField(1), Display.getWidth()/2 
        - getField(1).getPreferredWidth()/2, 0); 
      layoutChild(getField(1), getField(1).getPreferredWidth(), 
        getField(1).getPreferredHeight()); 

      setPositionChild(getField(2), Display.getWidth() 
        - getField(2).getPreferredWidth(), 0); 
      layoutChild(getField(2), getField(2).getPreferredWidth(), 
        getField(2).getPreferredHeight()); 

      setExtent(width, 35); 
     } 

    }; 

    final ButtonField bmpfield1 = new ButtonField("menu"); 
    // To display Home icon 

    final Bitmap bmp2 = Bitmap.getBitmapResource("home.png"); 
    BitmapField bmpfield2 = new BitmapField(bmp2, Field.FOCUSABLE 
      | Field.FIELD_RIGHT); 

    // To display Title 

    final VerticalFieldManager hfm_mainlbltext = new VerticalFieldManager(
      FIELD_HCENTER); 
    LabelField lbl = new LabelField("Body Surface Area", 
      Field.FIELD_VCENTER); 
    LabelField lbl1 = new LabelField("Report", Field.FIELD_VCENTER); 

    lbl.setFont(lbl.getFont().derive(Font.BOLD)); 
    lbl1.setFont(lbl1.getFont().derive(Font.BOLD)); 
    // setMargin(int top, int right, int bottom, int left) 
    lbl1.setMargin(0, 0, 0, 50); 
    hfm_mainlbltext.add(lbl); 
    hfm_mainlbltext.add(lbl1); 

    // ////////////////////////////////////////////////////////////////////////////// 
    // fields 
    // /////////////////////////////////////////////////////////////////////////////// 

    LabelField lbltxt1 = new LabelField(
      "A Fractional Excretion of Sodium (FENa)", FIELD_HCENTER) { 
     protected void paint(Graphics g) { 
      g.setColor(0xde3f39); 
      super.paint(g); 
     } 
    }; 

    lbltxt1.setPadding(0, 5, 5, 5); 
    lbltxt1.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt2 = new LabelField(
      "1% suggests pre-renal disease, while > 1% is suggestive of acute tubular necrosis (ATN).", 
      FIELD_HCENTER) { 
     protected void paint(Graphics g) { 
      g.setColor(0x6d6e76); 
      super.paint(g); 
     } 
    }; 

    lbltxt2.setPadding(0, 5, 5, 5); 
    lbltxt2.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    VerticalFieldManager hfm8 = new VerticalFieldManager(); 
    HorizontalFieldManager hfmresult = new HorizontalFieldManager(); 

    hfm8.setPadding(10, 5, 5, 5); 

    final LabelField lblresulttext1 = new LabelField("Result :") { 
     protected void paint(Graphics g) { 
      g.setColor(0x6d6e76); 

      super.paint(g); 
     } 
    }; 

    final LabelField lblresulttext2 = new LabelField(
      "Fraction Excreation of Sodium") { 
     protected void paint(Graphics g) { 
      g.setColor(0x6d6e76); 
      super.paint(g); 
     } 
    }; 
    final LabelField lblresulttext3 = new LabelField("for this patient is") { 
     protected void paint(Graphics g) { 
      g.setColor(0x6d6e76); 
      super.paint(g); 
     } 
    }; 

    final LabelField lblresultcal = new LabelField("") { 
     protected void paint(Graphics g) { 
      g.setColor(0x0AFF0A); 
      super.paint(g); 
     } 
    }; 

    hfmresult.add(lblresulttext1); 
    hfmresult.add(lblresulttext2); 
    hfmresult.add(lblresulttext3); 
    // setMargin(top,right,bottom,left) 
    lblresulttext2.setMargin(5, 0, 0, 0); 

    lblresulttext1.setFont(lbl.getFont().derive(Font.BOLD, 27)); 
    lblresulttext2.setFont(lbl.getFont().derive(Font.BOLD)); 
    lblresultcal.setFont(lbl.getFont().derive(Font.BOLD, 26)); 

    hfm8.add(hfmresult); 
    hfm8.add(lblresultcal); 

    // to store the Bitmap 
    final HorizontalFieldManager hfmforbitmap = new HorizontalFieldManager(
      FIELD_HCENTER); 
    Bitmap objimage = Bitmap.getBitmapResource("bar.png"); 

    // to display the Bitmap 
    hfmforbitmap.add(new BitmapField(objimage)); 

    LabelField lbltxt3 = new LabelField(
      "Fractional Exceretion of Sodium formula ", FIELD_HCENTER) { 
     protected void paint(Graphics g) { 
      g.setColor(0Xde3f39); 
      super.paint(g); 
     } 
    }; 

    lbltxt3.setPadding(0, 5, 5, 5); 
    lbltxt3.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt4 = new LabelField(
      "UNa X Pcreat/Ucreat X PNa * 100%", FIELD_HCENTER) { 
     protected void paint(Graphics g) { 
      g.setColor(0x6d6e76); 
      super.paint(g); 
     } 
    }; 

    lbltxt4.setPadding(0, 5, 5, 5); 
    lbltxt4.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt5 = new LabelField("Where") { 
     protected void paint(Graphics g) { 
      g.setColor(0x000000); 
      super.paint(g); 
     } 
    }; 

    lbltxt5.setPadding(0, 5, 5, 5); 
    lbltxt5.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt6 = new LabelField("UNa = Urine sodium") { 
     protected void paint(Graphics g) { 
      g.setColor(0x000000); 
      super.paint(g); 
     } 
    }; 

    lbltxt6.setPadding(0, 5, 5, 5); 
    lbltxt6.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt7 = new LabelField("Pcreat = Plasma creatinine") { 
     protected void paint(Graphics g) { 
      g.setColor(0x000000); 
      super.paint(g); 
     } 
    }; 

    lbltxt7.setPadding(0, 5, 5, 5); 
    lbltxt7.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt8 = new LabelField("Ucreat = Urine creatinine") { 
     protected void paint(Graphics g) { 
      g.setColor(0x000000); 
      super.paint(g); 
     } 
    }; 

    lbltxt8.setPadding(0, 5, 5, 5); 
    lbltxt8.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    LabelField lbltxt9 = new LabelField("PNa = Plasma sodium") { 
     protected void paint(Graphics g) { 
      g.setColor(0x000000); 
      super.paint(g); 
     } 
    }; 

    lbltxt9.setPadding(0, 5, 5, 5); 
    lbltxt9.setFont(lbl.getFont().derive(Font.BOLD, 15)); 

    ButtonField btn = new ButtonField("btn"); 

    // ///////////////////////////////////////////////////// addding all // 
    // fields here 

    final HorizontalFieldManager hfm_main = new HorizontalFieldManager(
      Manager.VERTICAL_SCROLL); 

    final VerticalFieldManager vfm_l = new VerticalFieldManager() { 
     protected void sublayout(int maxWidth, int maxHeight) { 
      super.sublayout(280, maxHeight); 
      setExtent(280, maxHeight); 
     } 

     protected void paint(Graphics g) { 
      g.setBackgroundColor(Color.RED); 
      // Clears the entire graphic area to the current background 
      g.clear(); 
      super.paint(g); 
     } 
    }; 

    vfm_l.add(new LabelField("sliding pannel")); 
    vfm_r.add(bmpfield1); 
    vfm_r.add(hfm_mainlbltext); 
    vfm_r.add(bmpfield2); 

    // all layouts are added here in vertical scroll field 

    mainreportfractionsodiumvfm.add(vfm_r); 
    mainreportfractionsodiumvfm.add(lbltxt1); 
    mainreportfractionsodiumvfm.add(lbltxt2); 
    mainreportfractionsodiumvfm.add(hfm8); 
    mainreportfractionsodiumvfm.add(hfmforbitmap); 
    mainreportfractionsodiumvfm.add(lbltxt3); 
    mainreportfractionsodiumvfm.add(lbltxt4); 
    mainreportfractionsodiumvfm.add(lbltxt5); 
    mainreportfractionsodiumvfm.add(lbltxt6); 
    mainreportfractionsodiumvfm.add(lbltxt7); 
    mainreportfractionsodiumvfm.add(lbltxt8); 
    mainreportfractionsodiumvfm.add(lbltxt9); 
    // mainreportfractionsodiumvfm.add(btn); 
    hfm_main.add(mainreportfractionsodiumvfm); 
    add(hfm_main); 

回答

1

如果我沒有記錯,您需要在您的Manager都有可聚焦Fields,以便它滾動。

自從我做了這個破解以來,它已經有一段時間了,但是您能否設置一些LabelFields以獲得重點?我認爲這涉及到創建自己的自定義LabelField和覆蓋方法isFocusable()返回true


編輯:彼得奇怪的是正確的 - 請使用NullField他建議。

+0

不,我不能讓labelfields focusable.I認爲我打算使用你的第二個選項感謝您的快速回復@Richard Le Mesurier – Kirti

+3

而不是一個隱形的按鈕,我使用NullField,我需要一個非顯示可調焦的領域,像這樣。請注意,在OS 6.0及以上版本中,我的經驗是即使不可聚焦的字段也會滾動,所以這個技巧只需要OS 5.0及更低版本。 –

+0

thx @PeterStrange - 是的我在BB這些天有點生疏 - 回答更新 –