DisclosurePanel + Virtual Keyboard时ScrollPanel不同步

时间:2015-05-01 16:47:08

标签: javascript android gwt virtual-keyboard mgwt

我无法在(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);

我可以采取哪些建议来确保滚动与页面大小同步?

1 个答案:

答案 0 :(得分:0)

我最终陷入困境,用GWT ScrollPanel取代了MGWT ScrollPanel。需要一些移动css修补但工作正常。