ViewStub的布局根元素边距

6
在填充ViewStub后,LinearLayout没有边距。在填充后,我只能通过编程方式设置边距,还是有其他方法?
2个回答

6

我遇到了相同的问题,但是是在RelativeLayout上。我通过将边距放在ViewStub定义中来解决它。这可能不是最好的方法,最好的方法可能是使用分层布局,其中根布局的第一个子元素设置了边距并包含所有其他元素。

不确定造成这种情况的根本原因,但这是我知道的两个解决方法。


5

方法1: 根据Android开发者网站的说法,每当您使用ViewStub时,其布局参数都会传递给充气的子项。因此,要设置布局参数,例如marginLeft,marginTop,marginRight,marginBottom,您必须将值设置为ViewStub,这些值将传递给充气的子项。

enter image description here

方法2:或者在ViewStub被设置为可见后,您可以动态创建LayoutParams并将其设置为ViewGroup。这也是有效的。
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.leftMargin =getResources().getDimensionPixelSize(R.dimen.four);
        params.rightMargin=getResources().getDimensionPixelSize(R.dimen.four);
        params.bottomMargin=getResources().getDimensionPixelSize(R.dimen.eight);
        findViewById(R.id.linearLayout).setLayoutParams(params);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接