Question

I am trying to make four rows of three buttons each, and at the bottom of the buttons are two text views. I would like for them all to be spaced evenly but they aren't and I am not sure why.

Here is the code in my main.xml file.

<?xml version="1.0" encoding="utf-8"?>

<TableLayout android:id="@+id/TableLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">

<TableRow 

  android:id="@+id/TableRow01" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content">

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button01" 
  android:text="@string/str_1"/> 

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button02" 
  android:text="@string/str_2"/> 

<Button android:onClick="button_click"
  android:layout_weight="1"
  android:id="@+id/Button03" 
  android:text="@string/str_3"/>

<Button android:onClick="button_click"
  android:layout_weight="1" 
  android:id="@+id/Button04" 
  android:text="@string/str_4"/>

</TableRow>

<TableRow android:id="@+id/TableRow02" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">

<Button android:onClick="button_click"
  android:layout_weight="1" 
  android:id="@+id/Button05"  
  android:text="@+string/str_5"/>

<Button android:onClick="button_click"
  android:layout_weight="1"
  android:id="@+id/Button06" 
  android:text="@+string/str_6"/>

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button07" 
  android:text="@+string/str_7"/>

<Button android:onClick="button_click"
  android:layout_weight="1" 
  android:id="@+id/Button08"  
  android:text="@+string/str_8"/>

</TableRow>

<TableRow android:id="@+id/TableRow03" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button09" 
  android:text="@+string/str_9"/>

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button10" 
  android:text="@+string/str_10"/>

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button11" 
  android:text="@+string/str_11"/>

<Button android:onClick="button_click" 
  android:layout_weight="1"
  android:id="@+id/Button12" 
  android:text="@+string/str_12"/>

</TableRow>

<TableRow android:id="@+id/TableRow04" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent">

<TextView android:text="@+id/TextView01" 
    android:layout_weight="1" 
    android:id="@+id/TextView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></TextView>

<TextView android:text="@+id/TextView02"
    android:layout_weight="1" 
    android:id="@+id/TextView02" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></TextView>

</TableRow>

</TableLayout>

My text views have the following code:

 TextView t = (TextView)findViewById(R.id.TextView01);
 TextView t2 = (TextView)findViewById(R.id.TextView02);
 t.setTextSize(24);
 t2.setTextSize(24);

When I run my program I get:

alt text

Was it helpful?

Solution

Ok so to help out with this add android:stretchColumns="0,1,2,3" in your Table Layout which would make buttons even sized.

Secondly add a android:layout_span="2" to both of your text views.

Heres you a final code:

<!-- NOTICE STRETCHCOLUMNS ATTRIBUTE-->
<TableLayout android:id="@+id/TableLayout01"
xmlns:android="http://schemas.android.com/apk/res/android"
android:stretchColumns="0,1,2,3"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
>
.
.
.

.
.
<!-- NOTICE LAYOUT_SPAN ATTRIBUTE-->
<TextView android:text="@+id/TextView01" 
    android:layout_weight="1" 
    android:id="@+id/TextView01"
    android:layout_span="2"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></TextView>

<TextView android:text="@+id/TextView02"
    android:layout_weight="1" 
    android:id="@+id/TextView02" 
    android:layout_span="2"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></TextView>

If you are setting the text size programmatically to make your TextViews evenly spaced, its not needed when you have android:layout_span set.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top