ExtJS带Logo的Tab Panel布局异常求助(Sencha Architect实现)
Fixing Tab Panel Content Width Issue with Docked Logo in ExtJS
嘿,我瞅了你这段ExtJS代码,问题根源很明显——你把Logo直接塞到TabPanel的items里还设置了docked: 'left',这可不对哦!TabPanel的items是专门用来放各个标签页内容的,你这么搞等于给TabPanel加了个左侧固定的组件,直接把内容区域挤到右边,自然没法占满整个宽度啦。
下面给你两种靠谱的解决办法,按需选就行:
方法1:把Logo放到TabPanel的Header里(推荐)
TabPanel的header区域本来就是用来放导航元素、Logo这类顶部装饰的,把Logo放这儿完全不会干扰标签页内容的布局:
修改后的TabPanel代码片段:
{ xtype: 'tabpanel', style: 'background:black', // 给TabPanel配置header,把Logo放在这里 header: { items: [ { xtype: 'image', height: 'auto', width: 'auto', docked: 'left', minWidth: 150, src: 'http://192.168.1.100/nispera/logo.png' } ] }, items: [ // 这里只保留标签页内容,比如原来的Financials容器 { xtype: 'container', title: 'Financials', iconCls: 'fa-search', border: true, height: 250, html: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s...', items: [/* 你的Grid内容 */] }, // 其他标签页保持不变 { xtype: 'container', title: 'Executive', iconCls: 'fa-search', height: 'auto' }, { xtype: 'container', title: 'Statements', iconCls: 'fa-search' }, { xtype: 'container', title: 'Breakdown', iconCls: 'fa-search' }, { xtype: 'container', title: 'Forecast', iconCls: 'fa-search' }, { xtype: 'container', title: 'Process', iconCls: 'fa-search' } ] }
方法2:用dockedItems放置Logo(适合非顶部Logo场景)
如果你确实需要Logo在左侧而非顶部,那可以用dockedItems配置,同时给TabPanel设置layout: 'fit',确保标签页内容占满剩余空间:
{ xtype: 'tabpanel', style: 'background:black', // 把Logo放到dockedItems里 dockedItems: [ { xtype: 'image', height: 'auto', width: 'auto', dock: 'left', minWidth: 150, src: 'http://192.168.1.100/nispera/logo.png' } ], // 开启fit布局,让内容占满剩余宽度 layout: 'fit', items: [ // 标签页内容保持不变 { xtype: 'container', title: 'Financials', iconCls: 'fa-search', ... }, // ...其他标签页 ] }
为啥原来的写法不行?
原来你把Logo和标签页内容都放在items数组里,ExtJS会把它们当成同级的组件来布局——左侧停靠的Logo会占据固定宽度,剩下的空间才给标签页内容,所以内容自然没法铺满整个TabPanel宽度啦。
内容的提问来源于stack exchange,提问作者Shijin TR
相关产品推荐
相关产品推荐

