以编程方式将LinearLayout高度更改为0



我用将LinearLayout从其原始高度调整为0

ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
requestLayout();

除了newHeight = 0之外,其他一切都正常——布局的高度变回原来的高度。我该如何避免?

如果newHeight == 0,则将可见性设置为GONE没有帮助。

试试这个。。。。。

 LinearLayout layout = (LinearLayout)findViewById(R.id.yourLayoutId);
 LinearLayout.LayoutParams lp = (LayoutParams) layout.getLayoutParams();
 lp.height = 0;
layout = (LinearLayout)findViewById(R.id.linearTop);
layout.getLayoutParams().height =  ViewGroup.LayoutParams.WRAP_CONTENT;                
ViewGroup.LayoutParams params =    layout.getLayoutParams();
params.height =  ViewGroup.LayoutParams.WRAP_CONTENT;
layout.setLayoutParams(params);

难道不需要使用setBaseAttributes()设置params的高度吗?int height = ...不会对params产生任何影响。。。

你确定你得到的是实际的parameters对象,而不是一个对象的副本吗?我会尝试以下代码:

ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
setLayoutParams(params);
requestLayout();

然后尝试设置一个新的布局参数对象。这应该工作

ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT,0);
layout.setLayoutParams(lp);

最新更新