Android TableLayout With Different Column's Width In A Row
android, android-layout, android-tablelayout
Solution
You can try using layout_weight like this:
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal"
tools:context=".MainActivity" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ff00ff"
android:stretchColumns="*"
android:shrinkColumns="*">
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp" >
<TextView
android:id="@+id/textViewPlateValueLabel"
android:layout_weight="3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Label1:"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/productID"
android:layout_weight="7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="#00ff00"
android:ems="5"
android:text="Some Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp" >
<TextView
android:layout_weight="3"
android:id="@+id/ztlLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Label2:"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:layout_weight="7"
android:id="@+id/ztlShow"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="#00ff00"
android:text="Some Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:gravity="center" >
<TextView
android:id="@+id/isAllowed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Text"
android:background="#0088ff"
android:textAppearance="?android:attr/textAppearanceLarge" />
</TableRow>
</TableLayout>
</LinearLayout>
Problem
I am trying to do my first complex GUI, but now i can't to solve this problem. The first column of the first two rows only needs to contain the label, while the second column of the first two rows must occupy the remaining space. In this snapshot the problem that i noticed is that the first column is larger than i would like. This is the piece of code that implements that piece of layout. ``` ... ... <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="@drawable/linear_layout_background" android:stretchColumns="*" android:shrinkColumns="*"> <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" > <TextView android:id="@+id/textViewPlateValueLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/plateValue" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/productID" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/back" android:ems="5" android:text="@string/blank" android:textAppearance="?android:attr/textAppearanceLarge" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" > <TextView android:id="@+id/ztlLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ztl" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/ztlShow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/back" android:text="@string/blank" android:textAppearance="?android:attr/textAppearanceLarge" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:gravity="center" > <TextView android:id="@+id/isAllowed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/blank" android:background="@drawable/back" android:textAppearance="?android:attr/textAppearanceLarge" /> </TableRow> </TableLayout> ... ... ``` In addition, since they are really impractical, I would like to ask you some advice on the best approaches to use than this.