كيفية الحصول على ارتفاع ext.panel لملء منطقة الوالدين

StackOverflow https://stackoverflow.com/questions/4335916

  •  30-09-2019
  •  | 
  •  

سؤال

لدي ext.tabpanel التالي:

var modules_info_panel = new Ext.TabPanel({
    activeTab: 0,
    defaults:{autoScroll:true},
    //layout: 'fit', // makes component disappear
    viewConfig: {
        forceFit:  true //has no effect
    },
    // height: auto, //error "auto isn't recognized"
    items:[{
            title: 'Section 1',
            html: 'test'
        },{
            title: 'Section 2',
            html: 'test'
        },{
            title: 'Section 3',
            html: 'test'
        }]
});

الذي يشبه هذا:

alt text

كيف يمكنني الحصول على الخط في الوسط لتمتد إلى الأسفل بحيث يملأ مساحته الأم عموديًا؟

إليك كيفية تحميل tabpanel regionContent:

regionContent = new Ext.Panel({
    id: 'contentArea',
    region: 'center',
    autoScroll: true
});


function clearExtjsComponent(cmp) {
    var f;
    while(f = cmp.items.first()){
        cmp.remove(f, true);
    }
}

function replaceComponentContent(cmpParent, cmpContent) {
    clearExtjsComponent(cmpParent);
    cmpParent.add(cmpContent);
    cmpParent.doLayout();
}

replaceComponentContent(regionContent, modules_info_panel);

أرى أن الارتفاع لهذا العنصر في DOM هو المطلق (19 بكسل) ، أين يتم تعيين ذلك؟

alt text

إضافة

ماكستيرتش ، جربت فكرتك عن طريق وضع layout: 'fit' في علامات التبويب نفسها ولكن الخط لا يزال في نفس المكان:

var modules_info_panel = new Ext.TabPanel({
    activeTab: 0,
    defaults:{autoScroll:true},
    items:[{
            title: 'Section 1',
            layout: 'fit',
            html: 'test'
        },{
            title: 'Section 2',
            layout: 'fit',
            html: 'test'
        },{
            title: 'Section 3',
            layout: 'fit',
            html: 'test'
        }]
});
هل كانت مفيدة؟

المحلول

تصحيح:

آسف إدوارد كنت غير صحيح ، تريد layout: 'fit' داخل الخاص بك منطقة المنطقة لوحة. تغييرات الكود المحدثة أدناه.

فكرتك الأولية في الاستخدام layout: 'fit' صحيح ، ولكن لديك في الموقع الخطأ. تريد ما يلي:

var regionContent = new Ext.Panel({
   region     : 'center',
   autoScroll : true,
   layout     : 'fit', // added this line
   items      : []
});

نصائح أخرى

يبدو أنك داخل تخطيط حدودي ، كيف تحدد اللوحة التي تحدد التصميم الحدودي؟ يجب أن تملأ المنطقة المركزية للتخطيط الحدودي عادة المساحة التي لم تظل المناطق الأخرى. فعلت عينة تشبه تخطيطك: http://jsbin.com/ikazo3/6/edit

من تخطيط الحدود توثيق:

  • يجب أن تحتوي أي حاوية باستخدام BorderLayout على عنصر طفل مع المنطقة: "المركز". سيتم دائمًا تغيير حجم العنصر الفردي في منطقة الوسط لملء المساحة المتبقية التي لا تستخدمها المناطق الأخرى في التصميم.
  • يجب أن يكون للعرض من أي طفل مع منطقة من الغرب أو الشرق عرضًا (عدد صحيح يمثل عدد البكسلات التي يجب أن تأخذها المنطقة).
  • يجب أن يكون لدى أي طفل مع منطقة من الشمال أو الجنوب ارتفاع.
  • يتم إصلاح مناطق الحدود في وقت العرض وبعد ذلك ، قد لا تتم إزالة أو إضافة مكوناتها الفرعية. لإضافة/إزالة المكونات داخل الحدود ، اجعلها ملفوفة بواسطة حاوية إضافية تتم إدارتها مباشرة بواسطة BorderLayout. إذا كانت المنطقة قابلة للطي ، فيجب أن تكون الحاوية المستخدمة مباشرة من قبل مدير BorderLayout لوحة. في المثال التالي ، تتم إضافة حاوية (ext.panel) إلى المنطقة الغربية:
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top