У мене є погляд TableLayout, TableRow and TextView. Я хочу, щоб це виглядало як сітка. Мені потрібно отримати висоту і ширину цієї сітки. Методи getHeight()і getWidth()завжди повертають 0. Це відбувається, коли я динамічно форматую сітку, а також коли використовую версію XML.
Як отримати розміри для перегляду?
Ось моя тестова програма, яку я використовував у налагодженні для перевірки результатів:
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()і getWidth()після того, як життєвий цикл діяльності попросить погляди виміряти себе, іншими словами, зробіть такі речі onResume()і все. Не варто сподіватися, що ще не викладений об’єкт дізнається його розміри, у цьому вся хитрість. Немає необхідності в магії, запропонованій нижче.
getHeight()/Width()в onResume()не піддавалися> 0 значення для мене.