Saya memiliki pandangan TableLayout, TableRow and TextView
. Saya ingin itu terlihat seperti kotak. Saya perlu mendapatkan tinggi dan lebar dari kisi ini. Metode getHeight()
dan getWidth()
selalu kembali 0. Ini terjadi ketika saya memformat grid secara dinamis dan juga ketika saya menggunakan versi XML.
Bagaimana cara mengambil dimensi untuk tampilan?
Ini adalah program pengujian saya yang saya gunakan di Debug untuk memeriksa hasilnya:
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()
dan getWidth()
setelah siklus hidup Activity meminta pandangan untuk mengukur diri mereka sendiri, dengan kata lain, lakukan hal-hal semacam ini onResume()
dan hanya itu. Anda seharusnya tidak mengharapkan objek yang belum ditata untuk mengetahui dimensinya, itulah keseluruhan triknya. Tidak perlu sihir yang disarankan di bawah ini.
getHeight()/Width()
di onResume()
tidak menghasilkan> 0 nilai bagi saya.