android - 以编程方式将LayoutParams设置为View元素

时间:2014-10-23 12:34:06

标签: android android-layout

我希望按钮的尺寸相同,桌子上的按钮完全填满。但是按钮的大小不同,我错了什么?

我的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    android:orientation="horizontal" >

    <LinearLayout

    </LinearLayout>

    <TableLayout
        android:id="@+id/mainTableL"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="40dp"
        android:layout_marginRight="40dp"
        android:layout_marginTop="40dp" >
    </TableLayout>

</LinearLayout>

我的代码:

layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
mainTableLayout = (TableLayout) findViewById(R.id.mainTableL);

tableRow = new TableRow[VALUE_ROWS]; 
btn = new Button[VALUE_ROWS*VALUE_COLUMNS];

for (int indexRow = 0; indexRow < VALUE_ROWS; indexRow++){
    tableRow[indexRow] = new TableRow(this); 
    tableRow[indexRow].setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f));


    for (int indexColumn = 0; indexColumn < VALUE_COLUMNS; indexColumn++){
        btn[countBtn] = new Button(this);
        btn[countBtn].setLayoutParams(layoutParams);
        btn[countBtn].setId(countBtn);
        btn[countBtn].setBackgroundResource(R.drawable.fon);
        tableRow[indexRow].addView(btn[countBtn],layoutParams);
        countBtn++;                 
    }
    mainTableLayout.addView(tableRow[indexRow], layoutParams);
}   

我很抱歉我的纯英语。 谢谢

1 个答案:

答案 0 :(得分:0)

我不确定改变这个会对你有所帮助,但这肯定应该修复。对于表格行,您应该设置TableLayout.LayoutParams而不是TableRow.LayoutParams

tableRow[indexRow].setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f));

以后添加行时,请不要指定layoutParams:

mainTableLayout.addView(tableRow[indexRow]);

另请注意,指定行的大小没有任何效果,宽度设置为MATCH_PARENT,高度设置为WRAP_CONTENT(请参阅the doc)。与按钮类似,TableRow将宽度设置为WRAP_CONTENT,高度设置为MATCH_PARENT,无论您在布局参数中指定了什么。