그래서 임의의 수의 버튼 (9,16,25)을 추가하여 상대 레이아웃에서 일종의 그리드를 형성하고 싶습니다. 작업 시작시 프로그래밍 방식으로 단추를 추가하고 싶습니다. 예 는 :Android : 프로그래밍 방식으로 여러 버튼 추가 버그
1 2 3
4 5 6
7 8 9
또는
I는 3 × 3 격자배치해야 예 9 개의 타일을 포함하는 객체라는 BOARD를 생성
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
이 방법 I 버튼을 추가하십시오 :
buttons = new ArrayList<>();
for (int row = 0; row < board.getNoOfRows(); row ++){
for (int column = 0; column < board.getNoOfColumns() ; column ++){
// first button
if(row == 0 && column == 0){
buttons.add(addTile(board.getTile(currentButtonIndex) , null, null));
}
// next buttons on the first row
else if(row == 0) {
buttons.add(addTile(board.getTile(currentButtonIndex) , buttons.get(currentButtonIndex - 1), null));
}
// first buttons on subsequent rows
else if (row > 0 && column == 0){
buttons.add(addTile(board.getTile(currentButtonIndex) , null, buttons.get(currentButtonIndex - board.getNoOfColumns())));
}
// the rest of the buttons
else if (row > 0 && column > 0){
buttons.add(addTile(board.getTile(currentButtonIndex) , buttons.get(currentButtonIndex - 1), buttons.get(currentButtonIndex - board.getNoOfColumns())));
}
// add the buttons on the view
rlBoardView.addView(buttons.get(currentButtonIndex));
currentButtonIndex ++;
}
}
rlBoardView.setGravity(Gravity.CENTER);
이것은 addTile 메소드입니다 :
private Button addTile(Tile tileParam, Button leftButton, Button aboveButton){
Button tile = new Button(this);
tile.setId(tileParam.getIndex());
// setup buttons params
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
tile.setTextSize(15);
// if button exists on the left, add it to it's right
if(leftButton != null){
params.addRule(RelativeLayout.RIGHT_OF, leftButton.getId());
}
// if button exists above add it below it
if(aboveButton != null){
params.addRule(RelativeLayout.BELOW, aboveButton.getId());
}else{
}
tile.setLayoutParams(params);
tile.setOnClickListener(this);
tile.setText(String.valueOf(tileParam.getNumber()));
return tile;
}
문제는 결과 그리드이로 나타나 있다는 것입니다 :
2x2 grid 3x3 grid 4x4 grid
2 3 2 4 2 3
3 6 4 5 8 5 6 7
7 8 12 9 10 11
13 14 15
번호 매기기 내가 잘못 뭘하는지 모르겠어요 0
에서 시작합니다. 일부 버튼은 올바른 위치에 있지만 다른 버튼은 완전히 꺼져 있습니다. 또한 버튼 0은 나타나지 않습니다.
추가 규칙을 추가해도 아무런 차이가 없습니다. 동일한 출력을가집니다. –