我的表由动态数据填充,因此我在代码中添加了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);
答案 0 :(得分:2)
您可以发布适用于textview的XML布局(仅1或2)吗?
在黑暗中刺,但你可能想尝试为文本的布局参数而不是GRAVITY设置LAYOUT_GRAVITY,因为你强制宽度为150.将布局重力指定为CENTER应该强制整个TEXTVIEW移动到父容器的中间(表行)。
另一个想法:当您为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);
希望它会对你有所帮助。如果没有,请回复,以便我可以尝试另一种方式。