SOUI中weight不起作用问题

我是在hbox要使中间的文字占满所有空间. 左右两边各有一些控件. 结果weight没有任何作用.

在SOUI中使用XML布局属性指引(pos, offset, pos2type)

介绍中指出 size是2014年底增加的布局属性,size="width,height"。 width, height可以有3种值:full,-1,非负整数。 使用了full丝毫没有作用, 后来查看源码, 具体代码在
SLinearLayoutParam::OnAttrSize这个方法

    HRESULT SLinearLayoutParam::OnAttrSize(const SStringW & strValue,BOOL bLoading)
    {
        SStringWList szStr ;
        if(2!=SplitString(strValue,L',',szStr)) return E_FAIL;

        OnAttrWidth(szStr[0],bLoading);
        OnAttrHeight(szStr[1],bLoading);
        return S_OK;
    }

    HRESULT SLinearLayoutParam::OnAttrWidth(const SStringW & strValue,BOOL bLoading)
    {
        if(strValue.CompareNoCase(L"matchParent") == 0)
            width.setMatchParent();
        else if(strValue.CompareNoCase(L"wrapContent") == 0)
            width.setWrapContent();
        else
            width = GETLAYOUTSIZE(strValue);
        return S_OK;
    }

    void SLayoutSize::setMatchParent()
    {
        fSize = SIZE_MATCH_PARENT;
    }

    enum{
        SIZE_UNDEF = -3,
        SIZE_WRAP_CONTENT=-1,
        SIZE_MATCH_PARENT=-2,
        SIZE_SPEC = 0,
    };

也是说size里写matchParent-2都可以.

需要注意的是某个子控件使用weight, 其上层父控件如果是wrap包裹, weight将不起作用.

你可能感兴趣的:(SOUI中weight不起作用问题)