我无法在(mgwt)ScrollPanels和(gwt)DisclosurePanels(例如android)虚拟键盘上找到解决方案。
使用移动虚拟键盘将数据输入DisclosurePanel内的文本字段(并且虚拟键盘已消失)后,我的应用中的ScrollPanel与页面不同步。我无法滚动到页面顶部,页面末尾有一个空白区域表示虚拟键盘的大小。因此,滚动超出页面末尾是可能的,但不是顶部。
页面通常有几个Disclosure Panels。当输入输入时,页面上的所有此类面板都打开时,不会发生不同步情况。如果在弹出时取消键盘(即没有给出输入),也会保持正确的滚动。
UI Binder代码段:
<mgwt:panel.scroll.ScrollPanel ui:field="ascroll">
<mgwt:panel.flex.FlexPanel>
<mgwt:header.HeaderPanel>
<mgwt:header.HeaderTitle ui:field="atitle"/>
</mgwt:header.HeaderPanel>
<gwt:DisclosurePanel width="100%">
<gwt:customHeader>
<mgwt:header.HeaderPanel
<mgwt:header.HeaderTitle ui:field="anothertitle"/>
</mgwt:header.HeaderPanel>
</gwt:customHeader>
<mgwt:panel.flex.FlexPanel>
<mgwt:form.Form>
<mgwt:form.FormEntry>
<mgwt:input.MTextBox ui:field="afield"/>
</mgwt:form.FormEntry>
</mgwt:form.Form>
</mgwt:panel.flex.FlexPanel>
</gwt:DisclosurePanel>
</mgwt:panel.flex.FlexPanel>
</mgwt:panel.scroll.ScrollPanel>
我在ScrollPanel上使用refresh
来打开/关闭DisclosurePanels。工作良好。我曾尝试在字段的refresh
/ onChange
事件中onFocus
但无效。
ViewPort设置如下(已尝试/使用默认getAppSetting()
):
ViewPort viewPort = new MGWTSettings.ViewPort();
viewPort
.setWidthToDeviceWidth()
.setHeightToDeviceHeight()
.setUserScaleAble(false)
.setMinimumScale(1.0)
.setMinimumScale(1.0)
.setMaximumScale(1.0);
MGWTSettings settings = new MGWTSettings();
settings.setViewPort(viewPort);
settings.setFullscreen(true);
settings.setFixIOS71BodyBug(true);
settings.setPreventScrolling(true);
MGWT.applySettings(settings);
我可以采取哪些建议来确保滚动与页面大小同步?
答案 0 :(得分:0)
我最终陷入困境,用GWT ScrollPanel取代了MGWT ScrollPanel。需要一些移动css修补但工作正常。