我有一个LinearLayout的xml文件,其中包含一个TableLayout,后者包含TableRows,所以我希望在应用程序运行时以编程方式添加新的TableRow。
所以我使用addView方法编写了以下代码,但我的代码不起作用。
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout myRoot = (LinearLayout)findViewById(R.id.tbl_test);
TableRow a = new TableRow(this);
a.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
myRoot.addView(a);
}
}
xml文件
<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:padding="10dp"
android:orientation="vertical">
<TableLayout
android:id="@+id/tbl_test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:orientation="vertical"
android:layout_marginTop="1dp"
android:layout_marginBottom="1dp"
android:stretchColumns="1"
>
<TableRow
android:id="@+id/tbr_test"
android:background="#ffffff" android:layout_margin="1dp">
<TextView android:layout_column="0" />
<TextView android:layout_column="1" />
<TextView android:layout_column="2" />
<TextView android:layout_column="3" />
</TableRow>
<TableRow
android:background="#ffffff"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp">
<TextView android:layout_column="0" />
<TextView android:layout_column="1" />
<Button/>
<Button/>
</TableRow>
<TableRow
android:background="#ffffff"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp"
android:paddingRight="2dp">
<TextView android:layout_column="0" />
<TextView android:layout_column="1" />
<Button/>
<Button />
</TableRow>
<TableRow
android:background="#ffffff"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp"
android:paddingRight="3dp">
<TextView android:layout_column="0" />
<TextView android:layout_column="1" />
<Button />
<Button />
</TableRow>
<TableRow
android:id="@+id/tbr"
android:background="#ffffff"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp"
android:paddingRight="4dp">
<TextView android:layout_column="0" />
<TextView android:layout_column="1" />
<Button />
<Button/>
</TableRow>
</TableLayout>
</LinearLayout>
答案 0 :(得分:0)
TableLayout.LayoutParams
导致了这个问题。因此,您必须使用LayoutParams
而不是LinearLayout.LayoutParams
。
所以改变你的代码
TableRow a = new TableRow(this);
a.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
myRoot.addView(a);
到这个
TableRow a = new TableRow(this);
a.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
myRoot.addView(a);
并提供一些背景颜色或添加一些组件以在添加的TableRow
中查看。