보기로 구성되어 TableLayout, TableRow and TextView
있습니다. 그리드처럼 보이기를 원합니다. 이 그리드의 높이와 너비를 가져와야합니다. 방법 getHeight()
과 getWidth()
항상 내가이 XML 버전을 사용할 때 동적으로도 그리드를 포맷 할 때 발생 0으로 돌아갑니다.
뷰의 치수를 검색하는 방법은 무엇입니까?
결과를 확인하기 위해 디버그에서 사용한 테스트 프로그램은 다음과 같습니다.
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보다 큰 값을 얻지 못했습니다.