2017-01-27 9 views
0

In meiner Aktivität onCreate() Methode habe ich eine View erstellt und hartcoded seine Breite und Höhe gleich 50. Dann rufe ich measure Methode. Danach erwarte ich, dass getMeasuredWidth() zurückkehrt 50. Aber es 0.Warum gibt getMeasuredWidth() 0 zurück?

View v = new View(this); 
    v.setLayoutParams(new ViewGroup.LayoutParams(50, 50)); 

    final int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); 
    v.measure(spec, spec); 
    final int w = v.getMeasuredWidth(); 
    Log.e("aaa", String.valueOf(w)); // output is 0 

kehrt Was mache ich falsch? Wie kann ich die gemessene Ansichtsgröße errechnen? Ich will nicht, bis sie gezogen wurde, usw.

+0

möchten Sie vielleicht noch einmal die Dokumentation von 'makeMeasureSpec' lesen – Blackbelt

Antwort

0
private void measureDimension() { 
    view.post(new Runnable() { 
     @Override 
     public void run() { 
      int height = view.getMeasuredHeight(); 
      int width = view.getMeasuredWidth(); 

     } 
    }); 
} 

Sie können diese Methode in onCreate nennen.

+1

Da dies nicht bei onCreate oder onResume getan werden kann, wie das Duplikat erklärt. – AxelH

Verwandte Themen