2012-09-10 13 views
13

ImageView genişliğini ve yüksekliğini bilmem gerekiyor. Bunu parça halinde ölçmenin bir yolu var mı? Standart Bir Etkinlikte bunu kullanmaktan:Parçada ölçü görünümü

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    image.getWidth(); 
    image.getHeight(); 
} 

Ama fragmanında image.getWidth(); ve image.getHeight(); kullanabilir?

cevap

24

GlobalLayoutListener'u kullanın. Dinleyiciyi, onCreateView() numaralı ImageView numaranıza, bağlantıdaki bu cevapta yaptığınız gibi atarsınız. Ayrıca ana Etkinlik için onWindowFocusChanged()'dan daha güvenilirdir, bu yüzden stratejileri değiştirmenizi öneririz.

DÜZENLEME

Örnek:

final View testView = findViewById(R.id.view_id); 
ViewTreeObserver vto = testView.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
    Log.d("TEST", "Height = " + testView.getHeight() + " Width = " + testView.getWidth()); 
    ViewTreeObserver obs = testView.getViewTreeObserver(); 
    obs.removeGlobalOnLayoutListener(this); 
    } 
}); 
+0

Ben İşlem Çubuğu Sekme dinleyici tarafından görüntülenen bir parçada bir ImageView için genişlik ve yüksekliğini almak için bu pasajı kullanmaya çalıştı ... Bu cevaba eklemek için . (API14 + 'ı hedefleyen support.V4 API'yı kullanma) Sonuç almak için snippet'i' onViewCreated '(?)' E yerleştirmek zorunda kaldım. Aslında 'onCreateView'da' testView nesnesi boş, Görünüm bulunamadı ve bu durum istisna oluşturdu. – user2238983

+0

OnCreateView'da döndürdüğünüz görünüme uygulayabilmeniz gerekir. Sıfırdan dönmesinin nedeni, 'profileContainer' henüz mevcut olmamasıdır. – DeeV

+1

ProfilPadding ve profileContainer türleri nedir? –

İlgili konular