在动态生成TableRow时,如何拉伸和缩小列?

时间:2013-03-27 19:24:39

标签: android

我正在使用TableLayout并使用自定义行动态填充它,但现在如果我使用android:stretchColumns android:shrinkColumns它不起作用。

我的活动布局:

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView 
        android:text="@string/offline"
        android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="20dp"
    android:textStyle="bold"
    android:textSize="20sp"
    android:textColor="@color/dimGray"
    />

    <TableLayout
    android:id="@+id/download_full_table"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="20dp"
    android:stretchColumns="2"
    android:shrinkColumns="1"
    >
</LinearLayout>

我的行布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <TableRow 
        android:background="@color/white"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*">

        <TextView

            android:id="@+id/row_name"
            android:text="@string/empty" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:textSize="12sp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="7dp"
            android:layout_marginRight="10dp"
             />

        <TextView
            android:id="@+id/row_size"
            android:text="@string/empty" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/lightGray"
            android:layout_marginTop="7dp"
             />

        <Button 
            android:id="@+id/row_btnDownload"
            android:text="@string/baixar"
            android:layout_width="wrap_content" 
            android:layout_height="35dp"
            android:background="@drawable/btn_baixar_verde"
            android:textColor="@color/white"
            android:textSize="13sp"
            android:layout_marginTop="7dp"
            android:layout_marginBottom="7dp"
            android:layout_marginLeft="7dp"
            android:layout_marginRight="15dp"
            android:textStyle="bold"

            />

    </TableRow>

</LinearLayout>

我的代码:

TableLayout tableFullDownload = (TableLayout) findViewById(R.id.download_full_table);

LayoutInflater inflater = getLayoutInflater();

ArrayList<MetaDados> fullList = getIntent().getParcelableArrayListExtra("metaDadosFull");

for (MetaDados metaDados : fullList) {
    LinearLayout row = (LinearLayout) inflater.inflate(R.layout.download_table_row, tableFullDownload, false);
    TextView name = (TextView) row.findViewById(R.id.row_name);
    TextView size = (TextView) row.findViewById(R.id.row_size);

    name.setText(metaDados.getName());

    long fileSize = metaDados.getSize();
    fileSize = (fileSize / 1024) / 1024;
    String sizeToShow = (fileSize + " MB");

    size.setText(sizeToShow);

    tableFullDownload.addView(row);
}

我得到了什么:

enter image description here

我想要的是什么:

enter image description here

2 个答案:

答案 0 :(得分:6)

问题是我试图拉伸和缩小我的列但是,我在我的行中有一个独特的视图,在这个视图中我创建了我的列,然后解决这个问题的唯一方法是使用我的观点中的权重属性

 <TextView
            android:id="@+id/row_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:maxLines="2"

答案 1 :(得分:0)

其他选项是,您可以在res / drawable下创建可绘制资源。 可以是这样的......

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/white"/>
    <stroke android:color="@android:color/black"
        android:width="1dp" />
</shape>

保存它,然后将其设置为布局中TextView的背景:

android:background="@drawable/bckgrd_border_textbox"