我有2个视图 - 容器视图和仪表视图。我想以编程方式更改仪表视图的高度。问题在于,当我获得容器视图的高度时 - 它总是以2.0返回 - 即使高度是全屏的!
int fullHeight = containerView.getLayoutParams().height;
Number height = fullHeight * (thisTank.getTankTotalVolume().doubleValue()/thisTank.getTankMaxVolume().doubleValue());
Number width = gaugeView.getWidth();
//gaugeView.setLayoutParams(new LinearLayout.LayoutParams(width.intValue(), height.intValue()));
gaugeView.getLayoutParams().height = height.intValue() * fullHeight;
gaugeView.requestLayout();
答案 0 :(得分:2)
实际上,如果您将视图的高度设置为WRAP_CONTENT
中的MATCH_PARENT
或XML
,containerView.getLayoutParams().height
应该等于2,它是默认值...!
你必须有两个选择,
- 首先,您可以在XML文件中定义修复值
- 其次,建议您为此目的使用树观察器。请参阅以下代码......!
final View layout = (View)findViewById(R.id.YOUR_VIEW_ID);
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();
}
});