TextView Gravity在TableLayout中不起作用

时间:2012-04-23 17:21:18

标签: android xamarin.android

我的表由动态数据填充,因此我在代码中添加了TableRows及其Views。 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>

Activity.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);

2 个答案:

答案 0 :(得分:2)

  1. 您可以发布适用于textview的XML布局(仅1或2)吗?

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

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

    text.setGravity(Gravity.CENTER);

答案 1 :(得分: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);

希望它会对你有所帮助。如果没有,请回复,以便我可以尝试另一种方式。