Bir görüşüm var TableLayout, TableRow and TextView
. Izgara gibi görünmesini istiyorum. Bu ızgaranın yüksekliğini ve genişliğini almam gerekiyor. MetodlargetHeight()
ve getWidth()
her zaman 0 döndürür. Bu ızgara dinamik olarak biçimlendirdiğinizde ve bir XML sürümü kullandığımda olur.
Bir görünümün boyutları nasıl alınır?
Sonuçları kontrol etmek için Debug'da kullandığım test programım:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TableLayout;
import android.widget.TextView;
public class appwig extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maindemo); //<- includes the grid called "board"
int vh = 0;
int vw = 0;
//Test-1 used the xml layout (which is displayed on the screen):
TableLayout tl = (TableLayout) findViewById(R.id.board);
tl = (TableLayout) findViewById(R.id.board);
vh = tl.getHeight(); //<- getHeight returned 0, Why?
vw = tl.getWidth(); //<- getWidth returned 0, Why?
//Test-2 used a simple dynamically generated view:
TextView tv = new TextView(this);
tv.setHeight(20);
tv.setWidth(20);
vh = tv.getHeight(); //<- getHeight returned 0, Why?
vw = tv.getWidth(); //<- getWidth returned 0, Why?
} //eof method
} //eof class
getHeight()
ve getWidth()
Etkinlik yaşam döngüsü, görüşlerini kendileri ölçmek için sorduktan sonra, başka bir deyişle, bu tür şeyler yapın onResume()
ve hepsi bu. Henüz ortaya konmamış bir nesnenin boyutlarını bilmesini beklememelisiniz, tüm işte bu. Aşağıda önerilen sihire gerek yok.
getHeight()/Width()
içinde onResume()
benim için> 0 değerini vermemiştir.