请帮忙。当我调试应用程序时,添加了行,但是表格没有显示在屏幕上我单独创建了tablerow
的xml,而tablelayout
是在主xml文件中
table = (TableLayout) findViewById(R.id.goodsTable);
for (int i = 0; i < attrName.length; i++) {
TableRow row = (TableRow) LayoutInflater.from(getApplicationContext()).inflate(R.layout.attribute_row, null);
((TextView) row.findViewById(R.id.attributeName)).setText(attrName[i]);
((TextView) row.findViewById(R.id.attributeValue)).setText(barcode);
table.addView(row);
}
attribute_row xml:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/attributeName"
android:layout_height="wrap_content"
android:gravity="left"
android:textStyle="bold"
/>
<TextView
android:id="@+id/attributeValue"
android:layout_height="wrap_content"
android:gravity="right" />
</TableRow>
主xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:orientation="horizontal"
android:padding="10dp">
<EditText
android:id="@+id/goodsBarcode"
android:layout_width="262dp"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:padding="10dp"
android:singleLine="false"
android:background="@android:color/transparent" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="search"
android:id="@+id/search"
/>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TableLayout
android:id="@+id/goodsTable"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TableLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
请帮助; 当我调试应用程序时,添加行但屏幕上不显示表 我已经为tablerow单独创建了xml 和tablelayout在主xml文件中
答案 0 :(得分:1)
添加所有行后,只需在表对象上调用此方法,即可在UI上反映新添加的行:
requestLayout()
我有一个类似的代码,并通过添加<TableLayout android:id="@+id/myTable"
android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginTop="5dp">
<!--Dynamic content here-->
</TableLayout>
方法正常工作。
布局xml文件中的动态表如下所示:
android:layout_width
注意:TableLayout
的{{1}}和包含它的任何其他视图应为match_parent
。因为wrap_content
会在您添加新行时导致调整大小问题。
答案 1 :(得分:1)
调用null
时不要将inflate(...)
作为父项传递,因为它无法确定引用父项的属性(例如android:layout_width,android:layout_height)。
改为:
TableRow row = (TableRow) LayoutInflater.from(getApplicationContext()).inflate(R.layout.attribute_row, table, false);
答案 2 :(得分:0)
尝试设置table.addView(row,i);
或者您可以动态创建和添加行。
TableRow row;
for (int i = 0; i <=lstfDue.size(); i++)
{
row= new TableRow(this);
row.setLayoutParams(rowParams);
txtDate = new TextView(this);
txtAmount = new TextView(this);
txtDate.setText("text here");
txtAmount.setText("text here");
row.addView(txtDate);
row.addView(txtFeeType);
row.addView(txtAmount);
tblFeesDue.addView(row, i);
}
答案 3 :(得分:0)