UI5 MatrixLayout,XML视图中有2列

时间:2015-04-13 16:22:34

标签: xml layout matrix sapui5

我尝试制作一个MatrixLayout,其中1列包含2行文本,1列包含一行文本和一个Icon。

目前它看起来像这样:

MatrixLayout

  1. 问题:图标浮动到文本元素的右侧,但应位于文本下方。这是为什么?

  2. 问题:列宽为50%/ 50%,我需要它们为30%/ 70%。我试图为MatrixLayout设置属性“widths”,但在我的XML视图中,我不能像widths="[30%, 70%]"那样设置它们,因为然后控制台说:

  3.   

    未捕获错误:“[30%,70%]”是对象类型,对于Element sap.ui.commons.layout.MatrixLayout #__ layout1的属性“widths”,预期sap.ui.core.CSSSize [] p>

    视图中的摘录:

    <layout:MatrixLayout 
                                layoutFixed="false"
                                columns="2"
                                width="100%"
                                widths="10%, 90%"
                                >
                                <layout:MatrixLayoutRow>                            
                                <layout:cells>
                                    <layout:MatrixLayoutCell>
                                        <Text width="80%" maxLines="1" clampHeight="1" text="lululajksdhkajsdh askdahksdhahsdjkahjksdhasd kjahsdkjahsdhasjkdhasjd ">
                                        </Text>
                                        <Text width="80%" maxLines="1" clampHeight="1" text="lululajksdhkajsdh askdahksdhahsdjkahjksdhasd kjahsdkjahsdhasjkdhasjd ">
                                        </Text>
                                    </layout:MatrixLayoutCell>
                                    <layout:MatrixLayoutCell>
                                        <Text width="80%" maxLines="1" clampHeight="1" text="lululajksdhkajsdh askdahksdhahsdjkahjksdhasd kjahsdkjahsdhasjkdhasjd ">
                                        </Text>
                                        <core:Icon src="sap-icon://add"></core:Icon>
                                    </layout:MatrixLayoutCell>
                                </layout:cells>                 
                                </layout:MatrixLayoutRow>
                             </layout:MatrixLayout>
    

    我做错了什么?感谢..

2 个答案:

答案 0 :(得分:1)

我认为你不能直接在XMLView中指定它 - 因为它是一个数组,我不认为你可以直接在属性中指定它

但是,如果您为MatrixLayout指定了ID,您当然可以使用控制器完美地设置它:

onAfterRendering: function() {
    this.byId("myMatrixLayout").setWidths(["30%", "70%"]);
}

编辑:我还注意到您在MatrixLayoutCell中设置了多个控件 虽然这可能有效,但通常最好将每个控件放在自己的单元格中,以便更好地控制布局:

<l:MatrixLayout id="myLayout">
    <l:MatrixLayoutRow>
        <l:MatrixLayoutCell><Text text="In pharetra diam pretium bibendum" /></l:MatrixLayoutCell>
        <l:MatrixLayoutCell><Text text="Sed tristique diam non imperdiet commodo" /></l:MatrixLayoutCell>
    </l:MatrixLayoutRow>
    <l:MatrixLayoutRow>
        <l:MatrixLayoutCell><Text text="At tincidunt purus finibus" /></l:MatrixLayoutCell>
        <l:MatrixLayoutCell><core:Icon src="sap-icon://add" /></l:MatrixLayoutCell>
    </l:MatrixLayoutRow>
</l:MatrixLayout>

答案 1 :(得分:0)

您可以直接在XMLView中指定它

<l:MatrixLayout xmlns="sap.ui.commons"
    width="100%"
    height="100%"
    columns="3"
    widths="50%,40%,10%">
    <l:rows></l:rows>
</l:MatrixLayout>