2012-11-26 2 views
0

는 I 자바 코드를 이용하여 동적 테이블 레이아웃을 개발있어 도시되지표 레이아웃

첫 번째 행은 행 가지고 동일 자바 부분에있는 남아

<TableLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 

      android:stretchColumns="*" 
      android:id="@+id/TableMain" > 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="2dip" 
       android:background="#000000" > 

       <LinearLayout 
     android:id="@+id/lTable11" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="horizontal" > 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:layout_margin="1dip" 
        android:layout_weight="2" 
        android:background="#C0C0C0" 
        android:text="Grade" 
        android:gravity="right" 
        android:padding="5dp" /> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:layout_margin="1dip" 
        android:layout_weight="2" 
        android:background="#C0C0C0" 
        android:text="Hourse" 
        android:gravity="right" 
        android:padding="5dp" /> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:layout_margin="1dip" 
        android:layout_weight="6" 
        android:background="#C0C0C0" 
        android:text="Subject Name" 
        android:gravity="right" 
        android:padding="5dp" 
         /> 

        </LinearLayout> 

      </TableRow> 
     </TableLayout> 

XML에 내가 테이블 를 표시하지 않는 응용 프로그램을 실행할 때 XML

TextView tvRowGrades[]=new TextView[gotSubName.length]; 
    TextView tvRowHourse[]=new TextView[gotSubName.length]; 
    TextView tvRowSubName[]=new TextView[gotSubName.length]; 

    TableRow row[]=new TableRow[gotGradeItem.length]; 
    LinearLayout LRow[]=new LinearLayout[gotGradeItem.length]; 
    tableMain=(TableLayout)findViewById(R.id.TableMain); 

    for(int i=0;i<gotHourse.length;i++){ 
     row[i]=new TableRow(this); 
     TableRow.LayoutParams lRow=new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); 
     lRow.setMargins(2, 2, 2, 2); 
     row[i].setLayoutParams(lRow); 
     row[i].setBackgroundColor(Color.BLACK); 

     LinearLayout.LayoutParams lpLRow=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
     LRow[i]=new LinearLayout(this); 
     LRow[i].setLayoutParams(lpLRow); 
     LRow[i].setGravity(Gravity.CENTER); 
     LRow[i].setOrientation(LinearLayout.HORIZONTAL); 

     tvRowGrades[i]=new TextView(this); 
     tvRowGrades[i].setText(gotGradeItem[i]); 
     android.widget.LinearLayout.LayoutParams lpTvOther=new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.FILL_PARENT, 2); 
     lpTvOther.setMargins(1, 1, 1, 1); 
     tvRowGrades[i].setPadding(5, 5, 5, 5); 
     tvRowGrades[i].setGravity(Gravity.RIGHT); 
     tvRowGrades[i].setLayoutParams(lpTvOther); 
     LRow[i].addView(tvRowGrades[i]); 

     tvRowHourse[i]=new TextView(this); 
     tvRowHourse[i].setText(gotHourse[i]+""); 
     tvRowHourse[i].setPadding(5, 5, 5, 5); 
     tvRowHourse[i].setGravity(Gravity.RIGHT); 
     tvRowHourse[i].setLayoutParams(lpTvOther); 
     LRow[i].addView(tvRowHourse[i]); 

     tvRowSubName[i]=new TextView(this); 
     tvRowSubName[i].setText(gotSubName[i]); 
     android.widget.LinearLayout.LayoutParams lpTvSubName=new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.FILL_PARENT, 6); 
     lpTvSubName.setMargins(1, 1, 1, 1); 
     tvRowSubName[i].setPadding(5, 5, 5, 5); 
     tvRowSubName[i].setGravity(Gravity.RIGHT); 
     tvRowSubName[i].setLayoutParams(lpTvSubName); 
     LRow[i].addView(tvRowSubName[i]); 

     row[i].addView(LRow[i]); 
     tableMain.addView(row[i]); 
    } 

재산 나는이 문제를 해결하려면하시기 바랍니다

답변

0

변경 TableRow 폭은

  <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="2dip" 
      android:background="#000000" > 

문제는 당신의 행의 폭은 그것의 내용 (wrap_content)에 의해 정의되며, 콘텐츠의 폭 (행 내부에있는 LinearLayout)가 부모에 의해 정의된다는 점이다 match_parent합니다.

LinearLayout을 삭제하고 TextView 항목을 TableRow에 직접 입력하여 LinearLayout으로 확장 할 수 있습니다. 당신은 또한 LayoutParams 변경해야합니다 코드에 추가 할 다른 행에 대한

: 내가 그것을 그 표시를 변경

TableRow.LayoutParams lRow=new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT); 
+0

를 첫 번째 행의 XML 하지만 자바에서 다른 동적 행이 나던 내가 변경 –

+0

표시 자바 코드에서 wrap_content하지만 어떤 것도 나타나지 않았다. layout_weights가 apllying이기 때문에 선형 레이아웃이 필요하다. –

+0

for 루프의 코드가 xml 코드 배열 –