2011-10-15 20 views
5

android:layout_widthwrap_content olarak ayarlanmış bir düğmenin genişliğini elde etmeye çalışıyorum. getMeasuredWidth() kullanarak onCreate() içinde yapmaya çalıştığımda, ben sıfır bir değer elde ediyorum çünkü ben görünümün henüz hazır olmadığını düşünüyorum.Android - wrap_content için ayarlanmış bir düğmenin genişliğini elde etme

Genişliği ne zaman almalıyım? Görünüm başlatılırken takılabileceğim herhangi bir dinleyici var mı?

cevap

13

Düzene bir ağaç gözlemcisi ekleyebilirsiniz. Bu doğru genişlik ve yükseklik döndürmelidir. onCreate, çocuk görüşlerinin düzeninin yapılmasından önce çağrılır. Böylece genişlik ve yükseklik henüz hesaplanmamış. Yüksekliği ve genişliğini elde etmek için. Bilginize onCreate yöntemle

LinearLayout layout = (LinearLayout)findViewById(R.id.YOUD 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(); 

    } 
}); 
+1

bu koyun: 'removeGlobalOnLayoutListener' yeni API'ler önerilmiyor ve şimdi' removeOnGlobalLayoutListener' olduğunu. Daha fazla bilgi için: http://stackoverflow.com/a/16190337/487940 – harsimranb

İlgili konular