0

我已经实现了新的菜单组件setMenu(menu, config)。它在 Android 4.x、iOS6 和 iOS7 上完美运行,但在 Android 2.3 上无法正常运行(无论是在设备上还是在模拟器上)。我已经按照他们在厨房水槽中的示例代码进行了操作。

有没有人在Android 2.3上得到这个工作?

我整理了一个小样本,这就是它在 Chrome、Android 4.x、iOS6 和 iOS7 上的外观:

在此处输入图像描述 在此处输入图像描述

这是单击“showMenu”后在 Android 2.3 上的外观:

在此处输入图像描述

这就是我添加菜单的方式:

initialize: function() {
    var menu = Ext.create('MenuTest.view.MenuView');

    Ext.Viewport.setMenu(menu, {
        side: 'right',
        cover:  false
    });

    this. add({
        xtype: 'button',
        text: 'showMenu',
        listeners: {
            tap: function(button, e, eOpts) {
                Ext.Viewport.toggleMenu('right');
            }
        }
    })
}

我的 MenuView 只有一个标签:

config: {
    items: [
        {
            xtype: 'label',
            html: 'Test Menu'
        }
    ]
}

有没有人在Android 2.3上得到这个工作?

4

2 回答 2

0

这是一个基于您的答案的简短片段,您可以将其放入launch()函数的顶部(或与其他 ST 修复一起):

// Bugfix for Off-Canvas menu in Android 2.3
Ext.viewport.Android.override({
  showMenu: function (side) {
    if (Ext.os.version.lt('3')) {
      Ext.get('ext-viewport').setStyle('z-index', '1');
      this.getMenus()[side].$reveal = true;
    }
    this.callOverridden([side]);
  }
});
于 2014-01-15T13:54:09.170 回答
0

touch-src-Default-viewport中的setMenu方法似乎有一个错误......我们的修复:

// if (menu.$reveal) {  // original
   if (Ext.os.is.Android && Ext.os.version.lt('3') || menu.$reveal) {  // fixed
       Ext.getBody().insertFirst(menu.element);
       // Bugfix: inner buttons of slider overlap original container while sliding - change z-index
       Ext.get('ext-viewport').setStyle('z-index', '1');
    }

// if (menu.$reveal) {  // original
   if (Ext.os.is.Android && Ext.os.version.lt('3') || menu.$reveal) {  // fixed
       if (Ext.browser.getPreferredTranslationMethod() != 'scrollposition') {
           menu.translate(0, 0);
       }
    }
于 2013-11-18T10:39:47.937 回答