6

对 ViewStub 进行扩展后,LinearLayout 没有边距。膨胀后,我只能以编程方式设置边距,还是有其他方法?

4

2 回答 2

6

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

不确定其根本原因,但这是我所知道的两种解决方法。

于 2014-08-27T17:32:33.420 回答
5

方法1:根据Android开发者网站,每当你使用ViewStub时,它的布局参数都会传递给inflated child。所以要设置marginLeft,marginTop,marginRight,marginBottom等布局参数,你必须将值设置为ViewStub,这将是传给膨胀的孩子。

在此处输入图像描述

方法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);
于 2017-03-21T10:35:34.713 回答