Как выровнять элементы внутри tabPanel в сенсорном Сенча

У меня есть эта простая вкладка внутри TabPanel:

MyApp.views.Viewport = Ext.extend(Ext.TabPanel, {
    fullscreen: true,
    tabBar: {
        dock: 'bottom',
        layout: {
            type: 'hbox',
            align: 'stretch'
        },

    },
    items: [
        { xtype: 'homecard', id: 'home'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'spacer'},
        { xtype: 'settingscard', id: 'settings'},
    ],

});

Я бы хотел, чтобы "элементы" плавали влево, по центру и вправо, добавляя кучу спейсеров, это не "действительно" хороший выбор.

Есть идеи, как этого добиться?

1 ответ

Решение

По умолчанию компонент spacer принимает значение flex, равное 1, если ширина не установлена. Что, я думаю, означает разместить кнопку на каждой стороне панели вкладок, вам понадобится только 1 проставка, если вы не указали ширину. Тем не менее tabBar должен иметь другой макет по умолчанию для toolbar который работает:

MyApp.views.Viewport = Ext.extend(Ext.Panel({
    fullscreen: true,
    layout: 'card',
    dockedItems: [{
        xtype: 'toolbar',
        dock: 'bottom',
        defaults: {
            handler: function (btn, e) {
                MyApp.views.Viewport.setActiveItem(Ext.getCmp(btn.value));
            }
        },
        items: [{
            text: 'homecard',
            value: 'home'
        }, {
            xtype: 'spacer'
        }, {
            text: 'settingscard',
            value: 'settings'
        }],
        layout: {
            type: 'hbox',
            align: 'center'
        }
    }],
    items: [{
        title: 'homecard',
        id: 'home',
        html: 'home'
    }, {
        title: 'settingscard',
        id: 'settings',
        html: 'settings'
    }]
});

Вы могли бы перегружать tabBar отображать так же, как toolbar но я бы не задержал дыхание.

NB: stretch: Компоненты растягиваются вертикально, чтобы заполнить контейнер.

Другие вопросы по тегам