尝试扩展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自动创建一个sub-div,它不会扩展到整个宽度,并将输入内容放在 that :
<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中无效。还尝试将其设置在子div使用的某些类中(例如“ .sapMFlexItem”),也无法正常工作。尝试将每个容器的宽度设置为100%,这也不起作用。该文档没有提及有关手动设置flex属性的任何内容。
如何将flex-grow设置为1,或通过其他方法使输入扩展到VerticalLayout的相同宽度?
注意:在这里使用FlexBox并不是100%出售我的产品;我只是不知道我可以用来在其中放置输入和按钮以及以编程方式在页面中插入更多其他容器的其他容器,即:
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);
}
答案 0 :(得分:0)
弄清楚了。需要在Input中放置以下内容:
<Input>
...
<layoutData>
<FlexItemData growFactor="1"/>
</layoutData>
</Input>