0

我正在尝试以编程方式复制以下布局;但是, setGravity 和 setPadding 似乎没有效果:

我正在尝试在 TableRows 中重新创建文本视图(请注意,有填充,第二个文本视图是右对齐的)。另外,我正在尝试重新创建其他条目,因为它们是动态的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/myinfo_root"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:scrollbars="vertical"
        >
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainTable"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1">

    <TableRow>
        <TextView
            android:layout_column="1"
            android:text="Text1"
            android:padding="3dip" />

        <TextView
            android:id="@+id/text1"
            android:text="TBD"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_column="1"
            android:text="Text2"
            android:padding="3dip" />

        <TextView
            android:id="@+id/text2"
            android:text="TBD"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    . . .

这是添加 TextViews 的代码片段。它似乎有效,但条目没有填充并且没有正确对齐。

    int n = 0;
    TableLayout table = (TableLayout) findViewById(R.id.mainTable);

    for (int j=0; j<2; j++) {
        Log.v(LOG_TAG, "entering for loop");
        n++;

        TableRow tr = new TableRow(getApplicationContext());
        tr.setId(100+n);

        String key = "hello";
        float value = (float) 1.388);
        value = value/3600;

        TextView tvDynamicKey = new TextView(getApplicationContext());                      
        TextView tvDynamicUnit = new TextView(getApplicationContext());

        tvDynamicUnit.setText(Float.toString(value));
        tvDynamicUnit.setGravity(Gravity.RIGHT);
        tvDynamicKey.setText(key + " " + n); 
        tvDynamicKey.setPadding(3, 3, 3, 3);
        tvDynamicUnit.setPadding(3, 3, 3, 3);
        tr.addView(tvDynamicKey);
        tr.addView(tvDynamicUnit);
        table.addView(tr);
    }    
  }
4

1 回答 1

1

在您的布局中,您始终为左侧元素指定 column1 (android:layout_column="1")。但是您不会以编程方式进行动态创建。你可以这样做。我测试了它,它适用于我的环境。

 tvDynamicKey.setLayoutParams(new TableRow.LayoutParams(1));
于 2011-11-03T22:07:15.987 回答