Sencha touch Sencha Touch 2 FormPanel未正确显示(布局问题?)
我在Sencha Touch 2中的模板布局有问题。请参阅下面的示例应用程序 应该有一个具有“vbox”布局的面板,其中包含3项:一段文本、一个FormPanel和另一段文本。然而,FormPanel的大小似乎为0x0,根本没有显示,所以我只看到了两个文本 我发现有两件事可以让表单面板显示出来:Sencha touch Sencha Touch 2 FormPanel未正确显示(布局问题?),sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我在Sencha Touch 2中的模板布局有问题。请参阅下面的示例应用程序 应该有一个具有“vbox”布局的面板,其中包含3项:一段文本、一个FormPanel和另一段文本。然而,FormPanel的大小似乎为0x0,根本没有显示,所以我只看到了两个文本 我发现有两件事可以让表单面板显示出来: 设置外部面板上的布局:“安装”。但一切都是重叠的fit并不是为多个项目设计的,因此这不是一个解决方案 在FormPanel上设置显式宽度和高度配置。但我希望它自己布局,而不必指定像素。我为什么要这么做
fit
并不是为多个项目设计的,因此这不是一个解决方案宽度
和高度
配置。但我希望它自己布局,而不必指定像素。我为什么要这么做Ext.application({
name: 'TestApp',
launch: function() {
return Ext.Viewport.add({
xtype: 'panel',
layout: {
type: 'vbox',
align: 'center'
},
// layout: 'fit' // This shows the form, but overlaps all 3 panel items.
items: [
{ html: 'Fill in the form below' },
{
xtype: 'formpanel',
// width: 300, // These fixed sizes reveal the form, but why?
// height: 300, // These fixed sizes reveal the form, but why?
items: [
{
xtype: 'fieldset',
items: [
{
xtype: 'textfield',
name: 'username',
label: 'Username'
}
]
}
]
},
{ html: 'Fill in the form above' }
]
});
}
});
我稍微改变了一下你的代码,但我想到的是:
Ext.application({
name : 'TestApp',
requires: ['Ext.form.Panel', 'Ext.form.FieldSet'],
launch : function() {
var paneltest = Ext.create('Ext.Panel', {
fullscreen: true,
layout: 'vbox',
// layout: 'fit' // This shows the form, but overlaps all 3 panel items.
items : [
{
html : 'Fill in the form below',
flex: 1
},
{
xtype: 'formpanel',
flex: 1,
items : [
{
xtype : 'fieldset',
items : [{
xtype : 'textfield',
name : 'username',
label : 'Username'
}]
}
]
},
{
html : 'Fill in the form above',
flex: 1
}
]
});
Ext.Viewport.add(paneltest);
}
});
我对代码的主要更改是删除了
layout: {
type: 'vbox',
align: 'center'
}
我把它改成了
layout: 'vbox'
我还为元素添加了一个flex。这是使用vbox和hbox布局的正确方法。我不完全确定为什么会这样,但是看起来“中心”不是一个有效的值,您可以给align属性。我想你在找“中间人”。如果这不能满足您的需要,可以尝试向面板添加类或id,并使用css控制对齐。希望这有帮助。将
窗体面板
对象的可滚动属性设置为false
,这将解决问题
{
xtype: 'formpanel',
scrollable: false,
items: [
{
xtype: 'fieldset',
items: [
{
xtype: 'textfield',
name: 'username',
label: 'Username'
}
]
}
]
},
更新。请注意,在Sencha(2.3)的较新版本中,您必须使用scrollable:null
,这一点在回答这个问题时已经注意到。但由于没有文档记录,该功能可以在将来更改。TracKer的回答是正确的,但他没有解释原因
下面是我对为什么需要滚动的理解:false。。如果formpanel是可滚动的,那么您需要告诉Sencha它有多大(用户可以在该大小内滚动)。然而,如果它不可滚动,它将占用它允许的全部空间,并且为了变得更大,用户可以滚动访问它
有点让人困惑=\在Sencha 2.3上,“scrollable:false”对我不起作用“可滚动:null”是。@marco marsala,因为这没有文档记录,所以可以在将来更改。在写答案的时候,false
value工作得很好,但是,正如我所说,它是在Sencha的旧版本中,而不是在2.3中。谢谢你的“减号”,顺便说一句。