SAPUI5 FlexBox中的输入宽度

问题描述 投票:0回答:1

尝试在FlexBox容器内扩展Input的宽度。我希望它与父容器的宽度相同。这是我的view.xml:

<mvc:View xmlns:l="sap.ui.layout" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m">
    <l:VerticalLayout id="idVL" class="sapUiContentPadding" width="100%">
        <l:content>
            <Panel id="idPnl">
                <FlexBox id="idFB">
                    <Input id="idInput">...</Input>
                </FlexBox>
            </Panel>
        </l:content>
    </l:VerticalLayout>
</mvc:View>

在浏览器中检查页面显示父FlexBox实际上扩展到VerticalLayout中设置的宽度。但是,SAPUI5会自动创建一个子div,它不会扩展到整个宽度,并将输入放在:

<div id="xxxxx---view--idFB" data-sap-ui="..." class="..."> //This is the parent FlexBox, it extends to the size of VerticalLayout element.
    <div id="__data4" style="order:0;flex-grow:0;flex-shrink:1;..." class="..."> //This sub-FlexBox is created automatically, and is smaller than it's parent.
        <div id="xxxxx---view--idInput ...> //The input is placed here.
            ...
        </div>
    </div>
</div>

我可能是错的,但我怀疑“flex-grow:0”是罪魁祸首,我无法找到访问此属性的方法。我尝试在#idFB中的css中设置它,但是没有用。还尝试将其设置在sub-div使用的某些类(如“.sapMFlexItem”)中,也无法正常工作。尝试将每个容器的宽度设置为100%,也不起作用。该文档未提及有关手动设置flex属性的任何信息。

如何将flex-grow设置为1,或者通过其他方法使输入扩展到VerticalLayout的相同宽度?

注意:我不是100%在这里使用FlexBox销售;我只是不知道我可以用来放置输入和按钮的任何其他容器,并以编程方式在页面中插入更多,即:

controller.js:

addInput: function () {
    var oInput = this.byId("idInput").clone();

    var delButton = new sap.m.Button({
        icon: "sap-icon://delete",
        press: this.deleteInput
    });

    var _oLayout = new sap.m.FlexBox({  // Some other better container?
        items: [oInput, delButton]
    });
    this.byId("idPnl").addContent(_oLayout);
}
flexbox sapui5
1个回答
0
投票

弄清楚了。需要在Input中放置以下内容:

<Input>
    ...
    <layoutData>
        <FlexItemData growFactor="1"/>
    </layoutData>
</Input>
© www.soinside.com 2019 - 2024. All rights reserved.