我正在尝试使用 TableLayout 制作一个复杂的网格。我设法通过这样的xml来制作它(网格中的某些框没有突出显示):
通过此代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.15">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1">
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1">
</TableRow>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1">
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1">
</TableRow>
</TableRow>
</TableLayout>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1"/>
</TableLayout>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_red_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_blue_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_red_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_blue_light"
android:layout_weight="1"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_blue_light"
android:layout_weight="1">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_blue_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_red_light"
android:layout_weight="1"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_red_light"
android:layout_weight="1">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_red_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_blue_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_green_light"
android:layout_weight="1"/>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/holo_orange_light"
android:layout_weight="1"/>
</TableRow>
</TableLayout>
</FrameLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.85"></LinearLayout>
问题是,当我尝试以编程方式制作此网格的其中一个部分时,它只显示作为 TableLayout 的直接子级的 TableRow,而不显示作为另一个 TableRow 的子级的 TableRows。我使用这个 Java 代码:
TableLayout table1 = new TableLayout(this);
//Add TableLayout to a FramLayout holding multiple TableLayouts
frame.addView(table1);
table1.setBackgroundResource(R.color.some_random_color_for_debugging);
for(int num = 0; num<2; num++){
//4x2
TableRow row = new TableRow(this);
TableLayout.LayoutParams par = new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.FILL_PARENT, 1f);
row.setLayoutParams(par);
if(num==1){
row.setBackgroundResource(R.color.some_random_color_for_debugging1);
}
table1.addView(row, par);
for(int num1 = 0; num1<2; num1++){
//2x2
TableRow box = new TableRow(this);
TableRow.LayoutParams param = new TableRow.LayoutParams();
box.setLayoutParams(param);
if(num1==1){
box.setBackgroundResource(R.color.some_random_color_for_debugging2);
}
row.addView(box, par);
}
}
此代码使屏幕的一半为 some_random_color_for_debugging1,背景颜色为 some_random_color_for_debugging。
如何让它同时显示 TableRow 行和框?