2014-04-21 2 views
0

나는 TableLayout을 만든 다음 내 Java 코드에서 TableRow를 동적으로 만들고 8x8 그리드의 형태로 일부 버튼을 추가했습니다. 하지만 버튼 사이의 공간을 줄이려고합니다. TableRow에 대한 LayoutParam 설정을 시도했지만, 이렇게하면 출력에 빈 화면이 표시됩니다. 여기에 내 코드입니다 :동적으로 생성 된 TableRow 간의 패딩

LayoutParams param= new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
    field=new Button[8][8]; 
    tb=new TableLayout(this); 
    param.setMargins(10, 2, 10, 2); 

    for (int i = 0; i < field.length; i++) { 
     TableRow current=new TableRow(this); 
     for (int j = 0; j < field[i].length; j++) { 
      Button button=new Button(this); 
      field[i][j]=button; 
      button.setWidth(40); 
      button.setHeight(40); 
      button.setLayoutParams(param); 
      current.addView(button); 
     } 
     tb.addView(current); 
    } 
    t.addView(tb); 

하지만 button.setLayoutParams(param) 를 작성하지 않을 때 나는이 같은 출력을 얻을 : 나는 버튼 사이의 공간을 원하는 것을 제외하고는 정상 출력은

enter image description here

줄인.

+0

그냥 짐작 하겠지만 param.setMargins() 호출에서 매개 변수 값을 변경하는 것입니까? – Gravitoid

+0

나는 그것을 원하지만 출력에 아무런 영향을 미치지 않는 것 같다. –

답변

1

당신이보고있는 간격은 표준 안드로이드 버튼 배경 자산에 내장 된 패딩입니다. 설정> 개발자 옵션에서 "레이아웃 영역 표시"를 켜서 레이아웃이 올바른지 확인할 수 있습니다. 자신 만의 버튼 에셋을 만들거나 간단한 색상 만 있으면됩니다. 버튼 배경을 색상으로 설정하면됩니다.

+1

편리한 "Show Layout Bounds"팁을 보내 주셔서 감사합니다. 나는 그것을 모르고 있었고 도움이되었다. – Gravitoid

+0

@kcoppock 고맙다. 내가 원한 것이 아니지만, 잘 될 것이다. –

1

param.setMargins() 호출에서 음수 값을 사용하여 자연스러운 간격을 지나갈 수 있습니다. 또한 테이블 레이아웃에 동일한 레이아웃 여백을주고 WRAP_CONTENT를 너비와 높이로 사용하려고합니다. XML 파일에서 TableLayout을 사용하지 않고 버튼을 만들 때 변수 "t"가 필요한지 확실하지 않습니다. (나는 또한 내 화면에 맞게 5 × 5 격자를했다.)

LayoutParams param= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
field=new Button[5][5]; 
tb=new TableLayout(this); 

// these are the two important changes 
param.setMargins(-5, -5, -5, -5); 
tb.setLayoutParams(param); 


for (int i = 0; i < field.length; i++) { 
    TableRow current=new TableRow(this); 
    for (int j = 0; j < field[i].length; j++) { 
     Button button=new Button(this); 
     field[i][j]=button; 
     button.setWidth(40); 
     button.setHeight(40); 
     button.setLayoutParams(param); 
     current.addView(button); 
    } 
    tb.addView(current); 
} 
t.addView(tb); 

enter image description here

+0

이것은 정답이 아니며 버튼 자산에 패딩이 있습니다. 레이아웃은 괜찮습니다. – kcoppock