2015-05-01 13 views
0

Я не могу найти решение на (mgwt) ScrollPanels и (gwt) DisclosurePanels с (например, android) Виртуальные клавиатуры.ScrollPanel не синхронизирован, когда DisclosurePanel + Виртуальная клавиатура

После использования виртуальной клавиатуры для ввода данных в текстовое поле внутри DisclosurePanel (и исчезла виртуальная клавиатура) ScrollPanel в моем приложении не синхронизируется со страницей. Я не могу прокручивать верхнюю часть страницы, и в конце страницы есть пустая область, представляющая размер виртуальной клавиатуры. Таким образом, прокрутка за пределы страницы возможна, но не вверх.

На страницах обычно имеется несколько панелей для раскрытия информации. Неисправность синхронизации не возникает, когда все такие панели на странице открыты при вводе ввода. Правильная прокрутка также сохраняется после того, как клавиатура будет отменена (т. Е. Нет ввода) при появлении.

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> 

Я использую refresh на ScrollPanel для всех открытых/закрытия 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

В конце концов я вскочил и заменил MGWT ScrollPanel на GWT ScrollPanel. Нужен какой-то мобильный css, но отлично работает.

Смежные вопросы