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

Android 以编程方式将LinearLayout高度更改为0,android,android-layout,Android,Android Layout,我正在将LinearLayout从其原始高度调整为0,包括: ViewGroup.LayoutParams params = getLayoutParams(); params.height = newHeight; requestLayout(); 除了newHeight=0,其他一切都正常-版面的高度会更改回其原始高度。我怎样才能避免呢 如果newHeight==0,则将可见性设置为GONE没有帮助。您不需要使用设置参数的高度吗?int height=…将不会对params…产生任何影响。

我正在将
LinearLayout
从其原始高度调整为
0
,包括:

ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
requestLayout();
除了
newHeight=0
,其他一切都正常-版面的高度会更改回其原始高度。我怎样才能避免呢


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

您不需要使用设置
参数的高度吗?
int height=…
将不会对
params

产生任何影响。您确定得到的是实际的参数对象,而不是参数的副本吗? 我将尝试以下代码:

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

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

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

 LinearLayout layout = (LinearLayout)findViewById(R.id.yourLayoutId);

 LinearLayout.LayoutParams lp = (LayoutParams) layout.getLayoutParams();
 lp.height = 0;

为什么要将其重新zise为0?要隐藏它吗?我正在调整它的大小以处理拖放行为。用户在项目下方滑动并在layout.params.height=0上方隐藏?否则,view.GONE是一种很好的隐藏东西的方法。我这样做了,版面的内容不可见,但是高度回到了原始值,所以我有40dp的空白。setVisibility(view.INVISIBLE)?啊,我编辑了我的代码-它应该是
params.height=newHeight
。很抱歉但问题仍然存在。如果您
requestLayout
,则可以从
getlayoutparms
修改参数。否则,您必须
设置布局参数
。对于除
0
值以外的每一个值,它都能正常工作。它还可以设置原始高度。如果我将
1
设置为
0
,而不是
0
,则高度会很好地更改为
1
。使用id指定视图效果很好,它可以设置
0
高度。谢谢而且,如果我必须将其设置为“匹配父对象”,那么该如何实现呢?lp.height=LayoutParams.match\u parent;请添加如何解决用户问题的说明。另外,请阅读
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);