Reputation: 3030
I have a table that covers-up entire screen and contains variable number of rows.
I would like to know how can i distribute these rows vertically uniformly, so that they take up entire tables' space.
I have tried layout_weight, and weightSum, but its not working.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="0,1,2"
android:id="@+id/maintable"
android:weightSum="3" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_weight="1" >
<TextView
android:text="text 1_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="text 2_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="text 3_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_weight="1" >
<TextView
android:text="text 1_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="text 2_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="text 3_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_weight="1" >
<TextView
android:text="text 1_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="text 2_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="text 3_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
</TableLayout>
</LinearLayout>
Upvotes: 2
Views: 1798
Reputation: 179
Please check below code. This will cover entire screen with table rows uniformly
grid_layout.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</TableLayout>
grid_layout is filled with text views in code as below
public class GridLayoutActivity extends Activity {
private static final int NO_OF_ROWS = 5;
private static final int NO_OF_COLUMS = 5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
TableLayout gridview = (TableLayout) findViewById(R.id.tableLayout);
for (int rowCnt = 0 ; rowCnt < NO_OF_ROWS; rowCnt++) {
TableRow row = new TableRow(this);
TableLayout.LayoutParams tableLayoutLP = new TableLayout.LayoutParams();
tableLayoutLP.weight = 1;
row.setLayoutParams(tableLayoutLP);
for (int column = 0; column < NO_OF_COLUMS; column++) {
TextView tv = new TextView(this);
TableRow.LayoutParams tableRowLP = new TableRow.LayoutParams();
tableRowLP.setMargins(2, 2, 2, 2);
tableRowLP.weight=1;
tableRowLP.height = TableRow.LayoutParams.MATCH_PARENT;
tv.setTextColor(Color.WHITE);
tv.setGravity(Gravity.CENTER);
tv.setBackgroundColor(Color.DKGRAY);
tv.setLayoutParams(tableRowLP);
tv.setText("YourText");//Add your text here
row.addView(tv);
}
gridview.addView(row);
}
}
}
Upvotes: 0
Reputation: 86
Your code looks wrong as your are not setting 'fill parent' constraint for the vertical axis
<TableRow
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_weight="1" >
should be
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" >
Upvotes: 2