Soru & Cevap

View.getWidth() ve View.getHeight() 0 döndürüyor. ...

14.12.2014 - 08:57

Merhaba,

herhangi bir layout için setContentView()'den hemen sonra layout un kendisi de dahil bütün View ler için View.getWidth() / View.getHeight() 0 döndürüyor.

ama layout ekrana geldikten sonra  örneğin layout içindeki bir buton un onClick() olayında tüm View lerin boyutları getWidth() ve getHeight() la alınabiliyor. Layout ekrana gelmeden boyutları nasıl öğrenebilirim? Bir de bu setContentView() kullanmadan herhangi bir layout un içindeki view lere ulaşılamıyor mu?

[Borland C++ Builder'ın form yapısıyla karşılaştırdığımda: C++ Builder'de herhangi bir anda form un ekranda görünür olması gerekmeden formun tüm elemanlarına erişilebiliyor. Android'in birçok boyutlandırma işlemini runtime da yapmasından olsa gerek, Android'de bu işler biraz dolaylı gibi geldi bana :-( ]

9 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
15.12.2014 - 09:51
http://www.sherif.mobi/2013/01/how-to-get-widthheight-of-view.html?m=1 Linki inceler misin?
Umut Özden
15.12.2014 - 11:02
getMeasuredWidth() TextView ler için doğru değerler dönüyor, ama layout un içindeki ImageView'ler için 1044 gibi bir değer dönüyor, gene de teşekkürler işime yarayacak.
picture-1372-1408467635.jpg
ahmtbrk
15.12.2014 - 12:32
OnCreate olmadan önce henüz viewler çizilmediği için boyutlarını alamazsın. setContentView harici LayoutInflater diye bi class var harici bir xml i view e dönüştürmek için onu kullanabilirsin.
Umut Özden
15.12.2014 - 09:35
OnCreate() olmadan önce değil, setContentView() OnCreate()'in içinde. Activity'nin OnResume() gibi bir sürü event i olduğunu görüyorum. OnResume() içinde getWidth() denedim, gene 0 döndürdü. getWidth()'in 0 dönmemesi için hangi event in içinde çağırmalıyım? Ayrıca LayoutInflater'ı da inceledim. ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.anaekran2, null); // vg burada anaekran2.xml dosyasındaki ana LinearLayout oluyor. vg.getWidth() onCreate() veya onResume() içinde gene 0 döndürüyor.