아무리 말씀드려도 듣지를 않으시군요. 지난번에 코드까지 작성해 드렸는데요. 그래도 며칠 고생하셨고, 저도 마무리는 지어야 하기 때문에 적어봅니다.
<RelativeLayout
android:background="#ff00ff"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container_layout"
>
final RelativeLayout layout = (RelativeLayout)findViewById(R.id.container_layout);
layout.post(new Runnable()
{
@Override
public void run()
{
int cols = 4;
int rows = 4;
int w = layout.getWidth();
int h = layout.getHeight();
for (int j=0; j<rows; j++) {
for (int i=0; i<cols; i++) {
Button button = new Button(AbsoluteLayoutActivity.this);
layout.addView(button);
button.setX(w*i/cols);
button.setY(h*j/rows);
button.setWidth(w/cols);
button.setHeight(h/rows);
button.setText("Button" + i +","+j +"");
}
}
}
});
java 코드는 지난 번에 올려드린 코드인데요. xml을 보시면 layout_width가 match_parent로 되어 있는 것을 볼 수 있습니다.
wrap_content라는 것은 한마디로 컨텐츠를 감싸서 뷰를 구성하겠다는 의미입니다. 즉, 올리신 코드처럼 layout이 wrap_content가 되면 그냥 button 크기를 기준으로 감싸는 것 뿐이죠. wrap_content는 밑에서부터 위로 크기가 결정되는 방식입니다. 게임화면이라면 layout 의 크기는 화면 전체나 아니면 일정 영역으로 정해주어야 맞는 것이죠. layout의 크기를 결정하는 것이 먼저입니다.
grid layout에서 동적으로 추가한다면, api 21부터는 weight가 지원되니 그걸 사용하십시오.
wrap_content와 match_parent, 픽셀과 dp 에 대해 공부하십시오. 안드로이드 기초 중의 기초입니다.