如何以编程方式设置视图的高度?

时间:2015-10-15 14:50:16

标签: android view

我有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();

1 个答案:

答案 0 :(得分:2)

实际上,如果您将视图的高度设置为WRAP_CONTENT中的MATCH_PARENTXMLcontainerView.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(); 

    } 
});