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);