2013-08-23 99 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

我想这是同一个问题 - 只是想在两个地方整理它!感谢谢谢,这是没有问题的,很乐意提供帮助。事实上,一位“中心经理”是我想要发表多年的意见,你的问题给了这个机会。 –