如何在android中动态添加表行的同时正确对齐表布局



我正试图用从DB获取的值将表行添加到表布局中。因此,表行将被动态添加。我想要一个漂亮的布局,有两列,每个列的文本居中对齐。我正在使用以下代码。但它不起作用。有人能帮忙吗。

<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));
   }

试试这个。。。

   <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> 

为ur textview 指定布局宽度和高度属性

将表布局置于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>

现在您的java代码:

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);
    }
   }
 }

最新更新