2012-04-06 4 views
0

1.이 코드는 테이블 레이아웃을 사용하여 버튼 행렬을 표시하려고하는 곳입니다.이 매트릭스 화면을 독립적으로 만들려고했으나 제대로 작동하지 않습니다. 큰 크기의 에뮬레이터에서는 문제 버튼이 겹치게됩니다.테이블 레이아웃 화면을 독립적으로 만드는 방법

 TableLayout layout = new TableLayout (this); 
    layout.setStretchAllColumns(true); 
    Display display = ((WindowManager)  getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
      int width = display.getWidth(); 
      int height = display.getHeight(); 
      layout.setLayoutParams(new TableLayout.LayoutParams(height,width)); 

      layout.setPadding(1,1,1,1); 

      for (int f=0; f<=3; f++) 
      { 
       TableRow tr = new TableRow(this); 

       for (int c=0; c<=3; c++) 
       { 
        Button b = new Button (this); 
        b.setText(""+f+c); 
        b.setTextSize(10.0f); 
        b.setTextColor(Color.rgb(100, 200, 200)); 



        tr.addView(b,30,30); 


        final float scale = getBaseContext().getResources().getDisplayMetrics().density; 
        int pixels = (int) (dps * scale + 0.5f); 
        b.setHeight(pixels); 
        b.setWidth(pixels); 


       } // for 
       layout.addView(tr); 
      } // for 

      super.setContentView(layout); 
     } 

     } 

답변

1

이상한 방식으로 레이아웃 매개 변수를 설정하고 있습니다. 사용해보기 :

layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

버튼과 동일한 문제가 발생합니다. 이것을 사용하십시오 :

Button b = new Button (this); 

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT); 
params.gravity = Gravity.CENTER; // if you want it centered 
params.span = 1; 

b..setLayoutParams(params); 

b.setText(""+f+c); 
b.setTextSize(10.0f); 
b.setTextColor(Color.rgb(100, 200, 200)); 

tr.addView(b); 

그리고 "눈금"을 사용하여 높이 및 너비 값을 설정하지 마십시오. params.span = 1; 부분은 테이블 행의 모든 ​​요소에 동일한 너비를 제공해야합니다. 그리고 params.gravity = Gravity.CENTER;은 테이블 셀에 가운데 놓습니다.

또는 GridLayout을 사용할 수 있습니다. 그것을 여기에서보십시오 : New Layout Widgets: Space and GridLayout

+0

+1. –

+0

@PareshMayani 고마워요. 당신의 솔루션이 나를 도왔다. – pragati

0

저는 TableLayout에 익숙하지 않지만 LinearLayout으로 버튼을 같은 크기로 만들 수 있습니다. 하나의 LinearLayout을 4 개의 수평 LinearLayouts로 래핑 할 수 있습니다. 각 LinearLayouts에는 동일한 레이아웃 가중치를 갖는 4 개의 버튼이 있습니다.

예있는 LinearLayout : GridLayout과에 대한 http://developer.android.com/resources/tutorials/views/hello-linearlayout.html

관련 문제