2012-02-25 3 views
0

DB에서 값을 가져온 테이블 레이아웃에 테이블 행을 추가하려고합니다. 그래서 테이블 행이 동적으로 추가됩니다. 두 개의 열이있는 멋진 레이아웃과 각 가운데의 텍스트를 정렬하고 싶습니다. 아래 코드를 사용하고 있습니다. 하지만 작동하지 않습니다. 누구든지 도와주세요.android에서 테이블 행을 동적으로 추가하는 동안 테이블 레이아웃을 올바르게 정렬하는 방법

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/display_table" > 
<TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="1dp" 
     > 

     <TextView android:background="@drawable/cell_shape" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:gravity="center" 
      android:text=""/> 
     <TextView android:background="@drawable/cell_shape" 
      android:textAppearance="?android:attr/textAppearanceMedium" android:text="" 
      android:gravity="center"/> 
    </TableRow> 

    </TableLayout> 

다음과 같이 레이아웃에 행을 추가합니다.

private void addHeaderRow(TableLayout tl){ 
    TableRow tr = new TableRow(this); 
    tr.setPadding(1, 1, 1, 1); 

    tr.setLayoutParams(new LayoutParams(
      LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT)); 
     /* Create a Button to be the row-content. */ 
     TextView text1 = new TextView(this); 
     TextView text2 = new TextView(this); 

     text1.setText(in.toUpperCase()); 
     text2.setText(out.toUpperCase()); 

     text1.setGravity(Gravity.LEFT); 
     text2.setGravity(Gravity.CENTER); 
     tr.addView(text1); 
     tr.addView(text2); 
    /* Add row to TableLayout. */ 
    tl.addView(tr,new TableLayout.LayoutParams(
     LayoutParams.FILL_PARENT, 
     LayoutParams.WRAP_CONTENT)); 
    } 

답변

1

...이 그것을 시도

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/display_table" > 
<TableRow 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="1dp" 
    > 

    <TextView android:layout_width="150dp" 
     android:layout_height="wrap_content" 
    android:background="@drawable/cell_shape" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:gravity="center" 
     android:text=""/> 
    <TextView 
     android:layout_width="160dp" 
     android:layout_height="wrap_content" 
    android:background="@drawable/cell_shape" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="" 
     android:gravity="center"/> 
</TableRow> 

</TableLayout> 

우르 텍스트 뷰에 레이아웃 너비와 높이 속성을 지정

+0

Thanks Sandhya! layoutParams를 사용하여 테이블 행에 여백을 설정하려고합니다. 그렇게하면 텍스트보기가 테이블 행 아래에 표시됩니다. textviews는 테이블 행 안에 있어야합니다. 이것에 대한 어떤 suugestions? 미리 감사드립니다. – Harish

1

당신이 알고하지 않기 때문에 XML에 스크롤 뷰에서 테이블 레이아웃을 넣어 ... 표시 할 행의 개수

이제
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/display_table" > 
</TableLayout> 
</ScrollView> 

자바 코드 :

class SomeTableLayout extends Activity{ 

private TableLayout tableLayout = null; 
private TableLayout.LayoutParams params= null; 

void onCreate(){ 

tableLayout = (TableLayout)findViewById(R.id.display_table); 

addHeaderRow(); 

} 

private void addHeaderRow(){ 

tableLayout.removeAllViews(); 

for(int i = 0; i < cursor.length(); i++){ 
TableRow tr = new TableRow(this); 
tr.setPadding(1, 1, 1, 1); 
tr.setId(i + 1); 
tr.setOnclickLinstener(new onClickListener(){ 
    // do some datanse operation on click of row. 
}); 

params = new TableLayout.LayoutParams(TableLayout.LayoutParams.fillParent, 
TableLayout.LayoutParams.wrapContent); 

     /* Create a Button to be the row-content. */ 
    TextView text1 = new TextView(this); 
    TextView text2 = new TextView(this); 

    text1.setText(in.toUpperCase()); 
    text2.setText(out.toUpperCase()); 

    text1.setGravity(Gravity.LEFT); 
    text2.setGravity(Gravity.CENTER); 
    tr.addView(text1); 
    tr.addView(text2); 

    /* Add row to TableLayout. */ 
    tl.addView(tr); 
    } 
    } 
} 
+0

감사 Mohanish! 이것은 나를 도왔다. – Harish

관련 문제