我是在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将不起作用.