我正在使用以下代码将LinearLayout
从其原始高度调整为0
:
ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
requestLayout();
除了
newHeight = 0
之外,一切正常 - 布局的高度会改回其原始高度。我该如何避免这种情况?如果 newHeight == 0
,把可见性设置为 GONE
也无济于事。我正在使用以下代码将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;
0
高度。谢谢! - hszlayout = (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);
你确定你获取的是实际参数对象,而不是其副本吗? 我建议尝试以下代码:
ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
setLayoutParams(params);
requestLayout();
requestLayout
,则可以修改getLayoutParams
中的参数。否则,您必须使用setLayoutParams
。对于除0
以外的任何其他值,它都能正常工作。 - hsz尝试设置一个新的布局参数对象。这应该可以解决问题。
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT,0);
layout.setLayoutParams(lp);
0
改为1
- 高度会成功更改为1
。 - hsz你不需要使用setBaseAttributes()来设置params
的高度吗?int height = ...
对params
没有任何影响...
params.height = newHeight
。抱歉。然而问题仍然存在。 - hsz