0

我的表由动态数据填充,因此我在代码中添加了 TableRows 及其视图。TableLayout 和第一行(我的标题)是在 xml 中构建的。设置为中心的重力作用于这些项目。但是将 Gravity 设置为以我动态创建的 TableRows 和 Views 为中心是行不通的。

<TableLayout
    android:id="@+id/poweredEquip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:gravity="center"
    android:padding="10dip">        
    <TableRow
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="@drawable/tab_bg_unselected"
      android:gravity="center">
      <TextView
        android:text="Serial"
        android:textSize="15sp"
        android:textColor="@android:color/black"
        android:layout_width="130px"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:gravity="center"
        android:layout_column="1"/>
      <TextView
        android:text="Model"
        android:textSize="15sp"
        android:textColor="@android:color/black"
        android:layout_width="110px"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:gravity="center"
        android:layout_column="2"/>
      <TextView
        android:text="Status"
        android:textSize="15sp"
        android:textColor="@android:color/black"
        android:layout_width="150px"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:gravity="center"
        android:layout_column="3"/>
      <TextView
        android:text="Tool Turned"
        android:textSize="15sp"
        android:textColor="@android:color/black"
        android:layout_width="100px"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:gravity="center"
        android:layout_column="4"/>
      <TextView
        android:text="Hours"
        android:textSize="15sp"
        android:textColor="@android:color/black"
        android:layout_width="110px"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:gravity="center"
        android:layout_column="5"/>
      <TextView
        android:text="Trailer Model"
        android:textSize="15sp"
        android:textColor="@android:color/black"
        android:layout_width="110px"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:gravity="center"
        android:layout_column="6"/>
    </TableRow>
<TableLayout>

活动.cs

TableLayout powered = (TableLayout) FindViewById(Resource.Id.poweredEquip);
TableRow.LayoutParams p = new TableRow.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.WrapContent) {Gravity = GravityFlags.Center};
TableRow.LayoutParams p1 = new TableRow.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.WrapContent) {Column = 1, Gravity = GravityFlags.Center};

TableRow row = new TableRow(this) { LayoutParameters = p };
text = new TextView(this) {Text = dr["Serial"].ToString(), LayoutParameters = p1};
text.SetPadding(8, 8, 8, 8);
text.SetMaxWidth(150);
text.SetMinWidth(150);
row.AddView(text);

powered.AddView(row);
4

2 回答 2

2
  1. 你能发布你的文本视图(只有 1 个或 2 个)的 XML 布局吗?

  2. 刺在黑暗中,但您可能想尝试为文本的布局参数设置 LAYOUT_GRAVITY 而不是 GRAVITY,因为您将宽度强制为 150。将 Layout Gravity 指定为 CENTER 应该会强制整个 TEXTVIEW 移动到中间父容器(表格行)。

  3. 另一个想法:当您为 TextView 设置布局参数时,它使用的是 TableRow.LayoutParams。我认为它实际上可能是根据表格行设置参数,而不是设置 TextView 本身的参数。在将其添加到表格行之前,请尝试在您创建的每个 TextView 上调用它:

    text.setGravity(Gravity.CENTER);

于 2012-04-23T17:36:33.223 回答
0

如果您想为您的表行提供相同的属性,那么您可以轻松地做到这一点。

只需从您的 xml 布局中使用 get layout param,然后将这些 layoutparmas 设置为您的动态表行。

xml_table_row = (TableRow) findviewbyid (R.id.xml_table_row_id) TableLayout.layoutparam param = xml_table_row.getLayoutParams();

powered.AddView(row, param);

希望它会帮助你。如果没有请回复,以便我可以尝试其他方式。

于 2012-04-23T17:33:48.270 回答