프로그래밍 방식으로 TableLayout을 만들려고합니다. 구성 가능한 행 및 열 수와 함께 격자 모양의 레이아웃을 만들기 위해 노력하고 있습니다. 이것은 레이아웃 파일에서 할 일이 거의 없겠지만 각 자식 요소가 거의 동일하고 행과 열 개수를 구성 가능하게하려는 경우 가능한 경우 프로그래밍 방식으로 처리하고 싶습니다.프로그래밍 방식으로 TableRow 자식 차원 지정
지금까지 내가 가지고있는 것입니다.
MainActivity.java
private void displayBoard() {
TableLayout l = (TableLayout) findViewById(R.id.GameGrid);
l.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
for (int y = 0; y < b.height(); y++) {
TableRow r = new TableRow(this);
r.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, 15));
for (int x = 0; x < b.width(); x++) {
r.addView(b.getSpaceAt(x, y));
}
l.addView(r);
}
}
Board.java
for (int y = 0; y < spaces.length; y++) {
for (int x = 0; x < spaces[0].length; x++) {
spaces[y][x] = new BoardSpace(context, x, y);
}
}
BoardSpace.java
public class BoardSpace extends Button {
private ReversiPiece piece;
protected int x, y;
private BoardSpace(Context c) {
super(c);
}
public BoardSpace(Context c, int x, int y) {
super(c);
// this.setWidth(25); // Doesn't make a difference, either
// this.setHeight(15); // Doesn't make a difference, either
piece = null;
this.x = x;
this.y = y;
}
public ReversiPiece piece() {
return piece;
}
public void setPiece(ReversiPiece p) {
piece = p;
}
}
나는 기본적으로 버튼의 격자를 만들려고하지만, 지금까지있어 I 변경할 버튼의 크기를 변경할 수 없으므로 화면에 모두 맞출 수 있습니다. 현재 표준 크기로 표시되며 LayoutParams 정의에 대한 변경 사항은 차이가 없습니다.
이 문제는 내 LayoutParams 사용과 관련이 있다고 생각합니다. 각 View 유형과 관련된 LayoutParams 클래스가 많이 있으므로 올바른 클래스를 사용하지 않을 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.
EDIT : 시안화의 권장 사항에 따라 각 TableRow에 대해 새 TableLayout.LayoutParams 개체를 만들지 만 단추는 여전히 기본 크기로 표시됩니다.
흠 :
놀랍게도이 답변이 더 일반적인 질문에 대한했지만이 솔루션를 알려준 것입니다 LayoutParams 생성자에 매개 변수로 15px를 전달한다고 생각하면 훨씬 적습니다. 더 자세한 코드 정보를 추가했습니다. –
제안에 감사드립니다. 제안한대로, 각 TableRow에 대한 LayoutParams의 새 복사본을 만들어야한다고 생각합니다.하지만 크기 조정을 올바르게 조정하려면 각 버튼마다 TableRow.LayoutParams를 설정해야했습니다 (내 답변 참조). –