2011-05-04 252 views

回答

0

您可以設置窗口大小並將子面板的autoHeightautoWidth屬性設置爲true。 另一種方法是捕獲窗口的resize事件並根據新的大小值調整子面板的大小。

+0

autoWidth和autoHeight似乎在圖表上下文中不起作用。我不確定我是否做錯了什麼,或者是否有錯誤。 – fraber 2014-01-31 11:39:46

3

如寫道@deniztt你應該訂閱EventManager類onWindows Resize事件。

它可以是這樣的:

Ext.EventManager.onWindowResize(function() { 

    var width = Ext.getBody().getViewSize().width - 160; 
    var height = Ext.getBody().getViewSize().height - 140; 

    panel.setSize(width, height); 

}); 

其中面板是參考你的面板

你可以read about it here

+0

適合我想要的東西。謝謝! – codekoala 2013-07-23 16:10:52

12
Ext.EventManager.onWindowResize(function(w, h){ 
    panel.doComponentLayout(); 
}); 

假設你有一個名爲「面板」與內置的(例如height: "100%")一些自動調整大小面板。否則,窗口的新寬度和高度將被傳遞給傳遞給onWindowResize()的匿名函數。

+1

謝謝。這篇文章幫助我完全不同的問題。 – MarthyM 2015-09-17 07:23:02

+0

這是我一直在尋找的解決方案!我不得不調整窗口大小,所以我只是將匿名函數的高度和寬度傳遞給setSize函數。 'window.setSize(w,h)' – avn 2015-10-01 14:46:32

+3

在ExtJS 6中,EventManager不推薦使用,所以使用** Ext.GlobalEvents **代替:'Ext.GlobalEvents.on('resize',function(w,h){.. 。});' – ccallendar 2016-05-27 20:24:08

0

感謝Gegory和Joseph提供的EventManager解決方案。我已經做了該解決方案的一些小的變化,與DIV替換getBody()和設定我的圖表的初始寬度/高度(或任何其它部件):

autoWidth和autoHeight似乎

<div id="chart" style="overflow: hidden; position:absolute; width:100%; height:90%;"></div> 
.... 
Ext.onReady(function() { 
    var renderDiv = Ext.get('chart_div'); 
    var chart = Ext.create('Ext.chart.Chart', { 
     renderTo: renderDiv, 
     width: renderDiv.getWidth(), 
     height: renderDiv.getHeight() - 50, 
     ... 
    }); 

    Ext.EventManager.onWindowResize(function() { 
     var height = renderDiv.getHeight() -50; 
     var width = renderDiv.getWidth(); 
     chart.setSize(width, height); 
    }); 
}); 
不爲我工作(Ext-JS 4.2.1)。