我LinearLayout
从原来的高度重新调整0
为:
ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
requestLayout();
一切正常,除了newHeight = 0
- 布局的高度变回原来的高度。我怎样才能避免它?
将可见性设置为GONE
ifnewHeight == 0
没有帮助。
我LinearLayout
从原来的高度重新调整0
为:
ViewGroup.LayoutParams params = getLayoutParams();
params.height = newHeight;
requestLayout();
一切正常,除了newHeight = 0
- 布局的高度变回原来的高度。我怎样才能避免它?
将可见性设置为GONE
ifnewHeight == 0
没有帮助。
试试这个.....
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);
您不必设置params
使用setBaseAttributes()的高度吗?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);