在填充ViewStub后,LinearLayout没有边距。在填充后,我只能通过编程方式设置边距,还是有其他方法?
我遇到了相同的问题,但是是在RelativeLayout上。我通过将边距放在ViewStub定义中来解决它。这可能不是最好的方法,最好的方法可能是使用分层布局,其中根布局的第一个子元素设置了边距并包含所有其他元素。
不确定造成这种情况的根本原因,但这是我知道的两个解决方法。
方法1: 根据Android开发者网站的说法,每当您使用ViewStub时,其布局参数都会传递给充气的子项。因此,要设置布局参数,例如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);