以编程方式将布局视图放在表视图中

时间:2015-05-08 17:33:40

标签: android layout

我有一个名为row的布局文件,它基本上是我希望我的行看起来像

的包装器
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow
        android:id="@+id/tableRow"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">

        <TextView
            android:id="@+id/oid"
            android:layout_width="0dp"
            android:layout_weight="1" android:background="#dcdcdc"
            android:textColor="#000000"
            android:padding="5dip"

            />
        <TextView
            android:id="@+id/value"
            android:layout_width="0dp"
            android:layout_weight="1" android:background="#d3d3d3"
            android:textColor="#000000"
            android:padding="5dip"

            />
        <TextView
            android:id="@+id/type"
            android:layout_width="0dp"
            android:layout_weight="1" android:background="#dcdcdc"
            android:textColor="#000000"
            android:padding="5dip"

            />
    </TableRow> 
</LinearLayout>

现在我希望能够使用此布局创建一行并将其放在我在片段布局中定义的表中。这是我当前创建行的代码(它没有使用行布局文件)并将其添加到表中,但该行没有按照我希望的格式进行格式化。

TableLayout varbindTable = (TableLayout) view2.findViewById(R.id.tableLayout1);
TableRow row = new TableRow(getActivity());

row.setLayoutParams(new TableRow.LayoutParams(
        TableRow.LayoutParams.MATCH_PARENT,
        TableRow.LayoutParams.MATCH_PARENT));
varbindTable.addView(row);
TextView name = new TextView(getActivity());

name.setText(((EditText)view.findViewById(R.id.oid)).getText().toString());
name.setTextColor(Color.BLACK);
name.setLayoutParams(new TableRow.LayoutParams(
        0,
        TableRow.LayoutParams.MATCH_PARENT));
TextView value = new TextView(getActivity());

value.setText(((EditText)view.findViewById(R.id.value)).getText().toString());
value.setTextColor(Color.BLACK);
value.setLayoutParams(new TableRow.LayoutParams(
        0,
        TableRow.LayoutParams.MATCH_PARENT));
TextView type = new TextView(getActivity());

type.setText(((Spinner)view.findViewById(R.id.data_type_spinner)).getSelectedItem().toString());
type.setTextColor(Color.BLACK);
type.setLayoutParams(new TableRow.LayoutParams(
        0,
        TableRow.LayoutParams.MATCH_PARENT));

row.addView(name);
row.addView(value);
row.addView(type);

1 个答案:

答案 0 :(得分:0)

嗯,乍一看,问题看起来在2个示例中您的设置有所不同。在xml中,您使用layout_width =“0dp”和layout_weight =“1”。但是,在您使用MATCH_PARENT的代码中。

最近的例子我可以找到: How do you setLayoutParams() for an ImageView?