2015-10-15 4 views
0

У меня есть 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(); 

ответ

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

    } 
}); 
+0

Это здорово спасибо! Признайтесь, что пытаетесь перейти к разработке Android! – HillInHarwich

+0

Будь рад брату .... :) –

Смежные вопросы