TableLayout addView不起作用

时间:2016-12-15 10:39:56

标签: android

我有一个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>

1 个答案:

答案 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中查看。