2013-08-23 61 views
0

我有一個Labelfield,EditField和一個Button,它們居中對齊垂直。這三個字段我已添加到Verticalfield管理器中,然後添加到水平字段管理器。最後,HFM被添加到另一個VFM。現在在9800設備或9380曲線中,我觀察到當我觸摸編輯欄時,虛擬鍵盤即將到來。它正在部分隱藏編輯字段。虛擬鍵盤隱藏黑莓中的編輯字段的一部分

我想在虛擬鍵盤出現時移動這些東西。我怎麼能做到這一點。我的代碼在這裏:

HorizontalFieldManager hfm = new HorizontalFieldManager(); 
    VerticalFieldManager vfmComponent = new VerticalFieldManager(USE_ALL_WIDTH); 
    vfmComponent.add(lfServerUrl); 
    vfmComponent.add(mEfURL); 
    vfmComponent.add(mBtnSave); 
    hfm.add(vfmComponent); 
    int topEmptySpace = (Display.getHeight() - (Bitmap.getBitmapResource(mStrTopBar).getHeight() + hfm.getPreferredHeight() + 25))/2; 
    hfm.setMargin(topEmptySpace, 0, 0, 0); 
    VerticalFieldManager vfmMain = new VerticalFieldManager(VERTICAL_SCROLL| NO_HORIZONTAL_SCROLL); 
    vfmMain.add(hfm); 
    add(vfmMain); 

請幫忙。

+1

你能解釋爲什麼你有這麼多的嵌套管理器?如果此代碼放置在「MainScreen」子類中,則該屏幕已經帶有一個內置的「VerticalFieldManager」。我不明白爲什麼你不能只使用那個管理器,並去掉'hfm','vfmComponent'和'vfmMain'。但是,這可能是我不明白你的設計。也許截圖會有所幫助?這很重要,因爲您可能通過複雜的佈局觸發了此錯誤,並且解決方法可能需要了解哪個垂直字段管理器需要滾動。 – Nate

+0

我已經通過自定義我的頂級vfm修復了它。所以不需要添加這麼多的經理。不知何故,你在這裏。 –

回答

1

同樣的問題也在這裏的BB論壇上被問到; http://supportforums.blackberry.com/t5/Java-Development/Virtual-keyboard-is-hiding-the-part-of-the-edit-Field/td-p/2553879

給出的答案包括創建一個專門的管理器,該管理器通過重寫該管理器的子佈局來「集中」一個字段。然後將字段置於另一個標準管理器中,並添加到中心管理器中。這意味着中心經理只能處理一件事。最後的'技巧'是將MainScreen定義爲非滾動,這意味着居中管理器被賦予了它可以使用的高度,並且當虛擬鍵盤被添加時子高佈局被再次調用並且居中管理器可以調整位置。

BB論壇上有更多關於該主題的內容,包括對各種知識庫文章和示例代碼的參考。所以請參考該主題了解更多信息。

+0

我從我自己的that.same文章。任何方式再次感謝彼得。 –

+0

我想這是同一個問題 - 只是想在兩個地方整理它!感謝謝謝,這是沒有問題的,很樂意提供幫助。事實上,一位「中心經理」是我想要發表多年的意見,你的問題給了這個機會。 –