以编程方式在TableRow中添加新按钮不会返回与android中的XML相同的结果

时间:2017-04-22 12:10:41

标签: android xml tablelayout

有我的XML,然后就会有结果。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/diese">


<LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    <ScrollView
                android:id="@+id/scrollView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginBottom="50dp">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/darker_gray" >

        <TableLayout
                android:id="@+id/tableLayout1"
                android:layout_width="match_parent"
                android:layout_height="1000dp" >

           <TableRow
                    android:layout_height="0dp"
                    android:layout_weight="1" >

                <Button
                        android:id="@+id/one"
                        android:layout_width="0dp"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="1" />
            </TableRow>

等表格等。

结果如此:

My classic Table when i create with XML

因此,正如我们所看到的,我在一个滚动视图中有一个TableLayout,每行共享表TableLayout中的可用位置。 现在,我添加了动态添加其他行的可能性:

    TableRow tableRow = new TableRow(tableLayout.getContext());
    TableLayout.LayoutParams param= new TableLayout.LayoutParams(1, 0);
    tableRow.setLayoutParams(param);
    Button button = new Button(tableLayout.getContext());


    button.setId(this.idDiese);
    button.setLayoutParams(new TableRow.LayoutParams(0,TableRow.LayoutParams.MATCH_PARENT,1));
    button.setGravity(Gravity.CENTER);

    button.setText(this.intituleDiese);

    tableRow.addView(button);
    tableLayout.addView(tableRow);

结果是......

When i add TableRow dynamicly

因此我们可以注意到,新按钮与XML中的按钮不同。 但是我设置了我的TableRow和我在XML中使用的相同的layour params,同样也用于我的按钮。

最后,我们可以注意到风格的变化......

我该如何纠正这种情况?

1 个答案:

答案 0 :(得分:-1)

首先,您必须清楚一想

  
      
  • 如果以实用方式添加UI组件,则仅显示运行时。因为我们只是创建运行时间。这就是为什么不能添加xml文件。

  •   
  • 请参考this ...

  •