altosdroid: Clean up tab layout
authorKeith Packard <keithp@keithp.com>
Sun, 12 Jul 2015 05:17:16 +0000 (22:17 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 12 Jul 2015 05:17:16 +0000 (22:17 -0700)
Fuss with weights and gravitys, then add some wrapping layouts to get
things looking reasonable on small and larger screens.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosdroid/res/layout/tab_flight.xml
altosdroid/res/layout/tab_map.xml
altosdroid/res/layout/tab_pad.xml
altosdroid/res/layout/tab_recover.xml
altosdroid/src/org/altusmetrum/AltosDroid/GoNoGoLights.java
altosdroid/src/org/altusmetrum/AltosDroid/TabFlight.java
altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java

index 27c903d..85c171b 100644 (file)
     android:orientation="vertical" >
 
   <LinearLayout
-      xmlns:android="http://schemas.android.com/apk/res/android"
+      android:layout_weight="0"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
-      android:layout_weight="0"
-      android:baselineAligned="true"
-      android:orientation="horizontal" >
+      android:orientation="vertical" >
 
-    <RelativeLayout
-       android:layout_width="0dp"
+    <LinearLayout
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:layout_weight="0"
+       android:baselineAligned="true"
+       android:orientation="horizontal" >
 
-      <TextView
-         android:id="@+id/speed_label"
-         android:layout_width="wrap_content"
+      <RelativeLayout
+         android:layout_width="0dp"
          android:layout_height="wrap_content"
-         android:text="@string/speed_label" />
-
-      <TextView
-         android:id="@+id/speed_value"
-         android:layout_width="wrap_content"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/speed_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/speed_label" />
+
+       <TextView
+           android:id="@+id/speed_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/speed_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+      <RelativeLayout
+         android:layout_width="0dp"
          android:layout_height="wrap_content"
-         android:layout_alignParentRight="true"
-         android:layout_below="@id/speed_label"
-         android:text=""
-         android:textAppearance="?android:attr/textAppearanceSmall" />
-    </RelativeLayout>
-
-    <RelativeLayout
-       android:layout_width="0dp"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/height_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/height_label" />
+
+       <TextView
+           android:id="@+id/height_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/height_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+    </LinearLayout>
+
+    <LinearLayout
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:layout_weight="0"
+       android:baselineAligned="true"
+       android:orientation="horizontal" >
 
-      <TextView
-         android:id="@+id/height_label"
-         android:layout_width="wrap_content"
+      <RelativeLayout
+         android:layout_width="0dp"
          android:layout_height="wrap_content"
-         android:text="@string/height_label" />
-
-      <TextView
-         android:id="@+id/height_value"
-         android:layout_width="wrap_content"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/max_speed_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/max_speed_label" />
+
+       <TextView
+           android:id="@+id/max_speed_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/max_speed_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+      <RelativeLayout
+         android:layout_width="0dp"
          android:layout_height="wrap_content"
-         android:layout_alignParentRight="true"
-         android:layout_below="@id/height_label"
-         android:text=""
-         android:textAppearance="?android:attr/textAppearanceSmall" />
-    </RelativeLayout>
-
-  </LinearLayout>
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/max_height_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/max_height_label" />
+
+       <TextView
+           android:id="@+id/max_height_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/max_height_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+    </LinearLayout>
+
+    <LinearLayout
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="fill_parent"
+       android:layout_height="wrap_content"
+       android:layout_weight="0"
+       android:baselineAligned="true"
+       android:orientation="horizontal"
+       android:paddingTop="5dp" >
 
-  <LinearLayout
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:layout_weight="0"
-      android:baselineAligned="true"
-      android:orientation="horizontal" >
+      <RelativeLayout
+         android:layout_width="0dp"
+         android:layout_height="wrap_content"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/elevation_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/elevation_label" />
+
+       <TextView
+           android:id="@+id/elevation_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/elevation_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+      <RelativeLayout
+         android:layout_width="0dp"
+         android:layout_height="wrap_content"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/range_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/range_label" />
+
+       <TextView
+           android:id="@+id/range_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/range_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+    </LinearLayout>
+
+    <LinearLayout
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="fill_parent"
+       android:layout_height="wrap_content"
+       android:layout_weight="0"
+       android:baselineAligned="true"
+       android:orientation="horizontal"
+       android:paddingTop="5dp" >
 
-    <RelativeLayout
-       android:layout_width="0dp"
+      <RelativeLayout
+         android:layout_width="0dp"
+         android:layout_height="wrap_content"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/bearing_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/bearing_label" />
+
+       <TextView
+           android:id="@+id/bearing_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/bearing_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+      <RelativeLayout
+         android:layout_width="0dp"
+         android:layout_height="wrap_content"
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/compass_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="" />
+
+       <TextView
+           android:id="@+id/compass_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/compass_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
+
+    </LinearLayout>
+
+    <LinearLayout
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:layout_weight="0"
+       android:baselineAligned="true"
+       android:orientation="horizontal"
+       android:paddingTop="5dp" >
 
-      <TextView
-         android:id="@+id/max_speed_label"
-         android:layout_width="wrap_content"
+      <RelativeLayout
+         android:layout_width="0dp"
          android:layout_height="wrap_content"
-         android:text="@string/max_speed_label" />
+         android:layout_weight="1" >
+
+       <TextView
+           android:id="@+id/distance_label"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="@string/gnd_distance_label" />
+
+       <TextView
+           android:id="@+id/distance_value"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_below="@id/distance_label"
+           android:text=""
+           android:textAppearance="?android:attr/textAppearanceSmall" />
+      </RelativeLayout>
 
       <TextView
-         android:id="@+id/max_speed_value"
-         android:layout_width="wrap_content"
+         android:layout_width="0dp"
          android:layout_height="wrap_content"
-         android:layout_alignParentRight="true"
-         android:layout_below="@id/max_speed_label"
-         android:text=""
-         android:textAppearance="?android:attr/textAppearanceSmall" />
-    </RelativeLayout>
+         android:layout_weight="1" >
+      </TextView>
+
+    </LinearLayout>
 
     <RelativeLayout
-       android:layout_width="0dp"
+       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:paddingTop="5dp" >
 
       <TextView
-         android:id="@+id/max_height_label"
+         android:id="@+id/lat_label"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:text="@string/max_height_label" />
+         android:text="@string/latitude_label" />
 
       <TextView
-         android:id="@+id/max_height_value"
+         android:id="@+id/lat_value"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
-         android:layout_below="@id/max_height_label"
+         android:layout_below="@id/lat_label"
          android:text=""
          android:textAppearance="?android:attr/textAppearanceSmall" />
     </RelativeLayout>
 
-  </LinearLayout>
-
-  <LinearLayout
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:layout_weight="0"
-      android:baselineAligned="true"
-      android:orientation="horizontal"
-      android:paddingTop="5dp" >
-
     <RelativeLayout
-       android:layout_width="0dp"
+       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:paddingTop="5dp" >
 
       <TextView
-         android:id="@+id/elevation_label"
+         android:id="@+id/lon_label"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:text="@string/elevation_label" />
+         android:text="@string/longitude_label" />
 
       <TextView
-         android:id="@+id/elevation_value"
+         android:id="@+id/lon_value"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
-         android:layout_below="@id/elevation_label"
+         android:layout_below="@id/lon_label"
          android:text=""
          android:textAppearance="?android:attr/textAppearanceSmall" />
     </RelativeLayout>
 
     <RelativeLayout
-       android:layout_width="0dp"
+       android:id="@+id/apogee_view"
+       android:visibility="gone"
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:paddingTop="5dp" >
 
-      <TextView
-         android:id="@+id/range_label"
+      <ImageView
+         android:id="@+id/apogee_redled"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:text="@string/range_label" />
+         android:contentDescription="@string/apogee_voltage_label"
+         android:src="@drawable/grayled" />
 
-      <TextView
-         android:id="@+id/range_value"
+      <ImageView
+         android:id="@+id/apogee_greenled"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:layout_alignParentRight="true"
-         android:layout_below="@id/range_label"
-         android:text=""
-         android:textAppearance="?android:attr/textAppearanceSmall" />
-    </RelativeLayout>
-
-  </LinearLayout>
-
-  <LinearLayout
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:layout_weight="0"
-      android:baselineAligned="true"
-      android:orientation="horizontal"
-      android:paddingTop="5dp" >
-
-    <RelativeLayout
-       android:layout_width="0dp"
-       android:layout_height="wrap_content"
-       android:layout_weight="1" >
+         android:layout_toRightOf="@id/apogee_redled"
+         android:contentDescription="@string/apogee_voltage_label"
+         android:paddingRight="5dp"
+         android:src="@drawable/grayled" />
 
       <TextView
-         android:id="@+id/bearing_label"
+         android:id="@+id/apogee_voltage_label"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:text="@string/bearing_label" />
+         android:layout_toRightOf="@id/apogee_greenled"
+         android:text="@string/apogee_voltage_label" />
 
       <TextView
-         android:id="@+id/bearing_value"
+         android:id="@+id/apogee_voltage_value"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
-         android:layout_below="@id/bearing_label"
          android:text=""
          android:textAppearance="?android:attr/textAppearanceSmall" />
     </RelativeLayout>
 
     <RelativeLayout
-       android:layout_width="0dp"
+       android:id="@+id/main_view"
+       android:visibility="gone"
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
-       android:layout_weight="1" >
+       android:paddingTop="5dp" >
 
-      <TextView
-         android:id="@+id/compass_label"
+      <ImageView
+         android:id="@+id/main_redled"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:text="" />
+         android:contentDescription="@string/main_voltage_label"
+         android:src="@drawable/grayled" />
 
-      <TextView
-         android:id="@+id/compass_value"
+      <ImageView
+         android:id="@+id/main_greenled"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:layout_alignParentRight="true"
-         android:layout_below="@id/compass_label"
-         android:text=""
-         android:textAppearance="?android:attr/textAppearanceSmall" />
-    </RelativeLayout>
-
-  </LinearLayout>
-
-  <LinearLayout
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:layout_weight="0"
-      android:baselineAligned="true"
-      android:orientation="horizontal"
-      android:paddingTop="5dp" >
-
-    <RelativeLayout
-       android:layout_width="0dp"
-       android:layout_height="wrap_content"
-       android:layout_weight="1" >
+         android:layout_toRightOf="@id/main_redled"
+         android:contentDescription="@string/main_voltage_label"
+         android:paddingRight="5dp"
+         android:src="@drawable/grayled" />
 
       <TextView
-         android:id="@+id/distance_label"
+         android:id="@+id/main_voltage_label"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
-         android:text="@string/gnd_distance_label" />
+         android:layout_toRightOf="@id/main_greenled"
+         android:text="@string/main_voltage_label" />
 
       <TextView
-         android:id="@+id/distance_value"
+         android:id="@+id/main_voltage_value"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
-         android:layout_below="@id/distance_label"
          android:text=""
          android:textAppearance="?android:attr/textAppearanceSmall" />
     </RelativeLayout>
-
-    <TextView
-       android:layout_width="0dp"
-       android:layout_height="wrap_content"
-       android:layout_weight="1" >
-    </TextView>
-
   </LinearLayout>
-
-  <RelativeLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:paddingTop="5dp" >
-
-    <TextView
-       android:id="@+id/lat_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/latitude_label" />
-
-    <TextView
-       android:id="@+id/lat_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_alignParentRight="true"
-       android:layout_below="@id/lat_label"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </RelativeLayout>
-
-  <RelativeLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:paddingTop="5dp" >
-
-    <TextView
-       android:id="@+id/lon_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/longitude_label" />
-
-    <TextView
-       android:id="@+id/lon_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_alignParentRight="true"
-       android:layout_below="@id/lon_label"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </RelativeLayout>
-
-  <RelativeLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:paddingTop="5dp" >
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/apogee_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/apogee_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/apogee_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_toRightOf="@id/apogee_redled"
-       android:contentDescription="@string/apogee_voltage_label"
-       android:paddingRight="5dp"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/apogee_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_toRightOf="@id/apogee_greenled"
-       android:text="@string/apogee_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/apogee_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_alignParentRight="true"
-       android:layout_below="@id/apogee_voltage_label"
-       android:layout_toRightOf="@id/apogee_greenled"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </RelativeLayout>
-
-  <RelativeLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:paddingTop="5dp" >
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/main_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/main_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/main_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_toRightOf="@id/main_redled"
-       android:contentDescription="@string/main_voltage_label"
-       android:paddingRight="5dp"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/main_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_toRightOf="@id/main_greenled"
-       android:text="@string/main_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/main_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_alignParentRight="true"
-       android:layout_below="@id/main_voltage_label"
-       android:layout_toRightOf="@id/main_greenled"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </RelativeLayout>
-
 </LinearLayout>
index 2388a20..952abd4 100644 (file)
@@ -26,6 +26,7 @@
       android:baselineAligned="true"
       android:orientation="horizontal"
       android:layout_weight="1">
+
     <LinearLayout
        android:id="@+id/map_online"
        android:orientation="horizontal"
        android:layout_height="fill_parent"
        android:layout_weight="1">
     </LinearLayout>
-    <org.altusmetrum.AltosDroid.AltosMapOffline android:id="@+id/map_offline"
-                                               android:layout_width="fill_parent"
-                                               android:layout_height="wrap_content"
-                                               android:layout_weight="1"
-                                               />
+
+    <org.altusmetrum.AltosDroid.AltosMapOffline
+       android:id="@+id/map_offline"
+       android:layout_width="fill_parent"
+       android:layout_height="wrap_content"
+       android:layout_weight="1"/>
   </FrameLayout>
   
   <LinearLayout
index f7a69f2..88648c3 100644 (file)
      59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 -->
 
-<TableLayout
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:stretchColumns="2,3"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content">
 
-  <TableRow
-      android:padding="2dip"
+  <TableLayout
+      xmlns:android="http://schemas.android.com/apk/res/android"
+      android:stretchColumns="2,3"
+      android:layout_weight="0"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
-    
-    <ImageView
-       android:id="@+id/battery_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/battery_voltage_label"
-       android:src="@drawable/grayled"
-       />
-
-    <ImageView
-       android:id="@+id/battery_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/battery_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:id="@+id/battery_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/battery_voltage_label" />
-
-    <TextView
-       android:id="@+id/battery_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall"
-       />
-  </TableRow>
-
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/receiver_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/receiver_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/receiver_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/receiver_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/receiver_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/receiver_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/receiver_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:id="@+id/logging_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/logging_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:id="@+id/logging_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/logging_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:id="@+id/logging_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/logging_label" />
-
-    <TextView
-       android:id="@+id/logging_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_below="@id/logging_label"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:id="@+id/gps_locked_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/gps_locked_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:id="@+id/gps_locked_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/gps_locked_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:id="@+id/gps_locked_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/gps_locked_label" />
-
-    <TextView
-       android:id="@+id/gps_locked_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_below="@id/gps_locked_label"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:id="@+id/gps_ready_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/gps_ready_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:id="@+id/gps_ready_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/gps_ready_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:id="@+id/gps_ready_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/gps_ready_label" />
-
-    <TextView
-       android:id="@+id/gps_ready_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_below="@id/gps_ready_label"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/apogee_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/apogee_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/apogee_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/apogee_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/apogee_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/apogee_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/apogee_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/main_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/main_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/main_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/main_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/main_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/main_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/main_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/ignite_a_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_a_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/ignite_a_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_a_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/ignite_a_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/ignite_a_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/ignite_a_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/ignite_b_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_b_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/ignite_b_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_b_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/ignite_b_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/ignite_b_voltage_label" />
-
-    <TextView
-       android:visibility="gone"
-       android:id="@+id/ignite_b_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
-       android:visibility="gone"
-       android:id="@+id/ignite_c_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_c_voltage_label"
-       android:src="@drawable/grayled" />
 
-    <ImageView
+    <TableRow
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+      
+      <ImageView
+         android:id="@+id/battery_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/battery_voltage_label"
+         android:src="@drawable/grayled"
+         />
+
+      <ImageView
+         android:id="@+id/battery_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/battery_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/battery_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/battery_voltage_label" />
+
+      <TextView
+         android:id="@+id/battery_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall"
+         />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/receiver_row"
        android:visibility="gone"
-       android:id="@+id/ignite_c_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_c_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <ImageView
+         android:id="@+id/receiver_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/receiver_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/receiver_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/receiver_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/receiver_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/receiver_voltage_label" />
+
+      <TextView
+         android:id="@+id/receiver_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/logging_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/logging_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/logging_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/logging_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/logging_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/logging_label" />
+
+      <TextView
+         android:id="@+id/logging_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_below="@id/logging_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/gps_locked_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/gps_locked_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/gps_locked_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/gps_locked_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/gps_locked_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/gps_locked_label" />
+
+      <TextView
+         android:id="@+id/gps_locked_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_below="@id/gps_locked_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/gps_ready_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/gps_ready_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/gps_ready_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/gps_ready_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/gps_ready_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/gps_ready_label" />
+
+      <TextView
+         android:id="@+id/gps_ready_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_below="@id/gps_ready_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/apogee_row"
        android:visibility="gone"
-       android:id="@+id/ignite_c_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/ignite_c_voltage_label" />
-
-    <TextView
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <ImageView
+         android:id="@+id/apogee_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/apogee_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/apogee_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/apogee_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/apogee_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/apogee_voltage_label" />
+
+      <TextView
+         android:id="@+id/apogee_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/main_row"
        android:visibility="gone"
-       android:id="@+id/ignite_c_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content" >
-
-    <ImageView
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/main_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/main_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/main_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/main_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/main_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/main_voltage_label" />
+
+      <TextView
+         android:id="@+id/main_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/ignite_a_row"
        android:visibility="gone"
-       android:id="@+id/ignite_d_redled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_d_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <ImageView
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/ignite_a_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_a_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/ignite_a_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_a_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/ignite_a_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/ignite_a_voltage_label" />
+
+      <TextView
+         android:id="@+id/ignite_a_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/ignite_b_row"
        android:visibility="gone"
-       android:id="@+id/ignite_d_greenled"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:contentDescription="@string/ignite_d_voltage_label"
-       android:src="@drawable/grayled" />
-
-    <TextView
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/ignite_b_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_b_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/ignite_b_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_b_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/ignite_b_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/ignite_b_voltage_label" />
+
+      <TextView
+         android:id="@+id/ignite_b_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/ignite_c_row"
        android:visibility="gone"
-       android:id="@+id/ignite_d_voltage_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text="@string/ignite_d_voltage_label" />
-
-    <TextView
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/ignite_c_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_c_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/ignite_c_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_c_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/ignite_c_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/ignite_c_voltage_label" />
+
+      <TextView
+         android:id="@+id/ignite_c_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:id="@+id/ignite_d_row"
        android:visibility="gone"
-       android:id="@+id/ignite_d_voltage_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-    <TextView
-       android:id="@+id/receiver_lat_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_column="2"
-       android:text="@string/receiver_latitude_label" />
-
-    <TextView
-       android:id="@+id/receiver_lat_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-    <TextView
-       android:id="@+id/receiver_lon_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_column="2"
-       android:text="@string/receiver_longitude_label" />
-
-    <TextView
-       android:id="@+id/receiver_lon_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-
-  <TableRow
-      android:padding="2dip"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-    <TextView
-       android:id="@+id/receiver_alt_label"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_column="2"
-       android:text="@string/receiver_altitude_label" />
-
-    <TextView
-       android:id="@+id/receiver_alt_value"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:text=""
-       android:textAppearance="?android:attr/textAppearanceSmall" />
-  </TableRow>
-</TableLayout>
+       android:layout_gravity="center"
+       android:layout_weight="1"
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <ImageView
+         android:id="@+id/ignite_d_redled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_d_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <ImageView
+         android:id="@+id/ignite_d_greenled"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:contentDescription="@string/ignite_d_voltage_label"
+         android:src="@drawable/grayled" />
+
+      <TextView
+         android:id="@+id/ignite_d_voltage_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/ignite_d_voltage_label" />
+
+      <TextView
+         android:id="@+id/ignite_d_voltage_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/receiver_lat_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_column="2"
+         android:text="@string/receiver_latitude_label" />
+
+      <TextView
+         android:id="@+id/receiver_lat_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/receiver_lon_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_column="2"
+         android:text="@string/receiver_longitude_label" />
+
+      <TextView
+         android:id="@+id/receiver_lon_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+
+    <TableRow
+       android:padding="2dip"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/receiver_alt_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_column="2"
+         android:text="@string/receiver_altitude_label" />
+
+      <TextView
+         android:id="@+id/receiver_alt_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </TableRow>
+  </TableLayout>
+</LinearLayout>
index c280662..201f45e 100644 (file)
      with this program; if not, write to the Free Software Foundation, Inc.,
      59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-       android:layout_width="fill_parent"
-       android:layout_height="wrap_content"
-       android:orientation="vertical" >
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content" >
-
-               <TextView
-                       android:id="@+id/bearing_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/bearing_label" />
-
-               <TextView
-                       android:id="@+id/bearing_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@+id/bearing_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content" >
-
-               <TextView
-                       android:id="@+id/direction_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/direction_label" />
-
-               <TextView
-                       android:id="@+id/direction_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@+id/direction_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/distance_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/distance_label" />
-
-               <TextView
-                       android:id="@+id/distance_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@+id/distance_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/target_lat_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/target_latitude_label" />
-
-               <TextView
-                       android:id="@+id/target_lat_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/target_lat_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/target_lon_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/target_longitude_label" />
-
-               <TextView
-                       android:id="@+id/target_lon_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/target_lon_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/receiver_lat_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/receiver_latitude_label" />
-
-               <TextView
-                       android:id="@+id/receiver_lat_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/receiver_lat_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/receiver_lon_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/receiver_longitude_label" />
-
-               <TextView
-                       android:id="@+id/receiver_lon_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/receiver_lon_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/max_height_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/max_height_label" />
-
-               <TextView
-                       android:id="@+id/max_height_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/max_height_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/max_speed_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/max_speed_label" />
-
-               <TextView
-                       android:id="@+id/max_speed_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/max_speed_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
-       <RelativeLayout
-               android:layout_width="wrap_content"
-               android:layout_height="wrap_content"
-               android:paddingTop="5dp" >
-
-               <TextView
-                       android:id="@+id/max_accel_label"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:text="@string/max_accel_label" />
-
-               <TextView
-                       android:id="@+id/max_accel_value"
-                       android:layout_width="wrap_content"
-                       android:layout_height="wrap_content"
-                       android:layout_alignParentRight="true"
-                       android:layout_below="@id/max_accel_label"
-                       android:text=""
-                       android:textAppearance="?android:attr/textAppearanceSmall" />
-       </RelativeLayout>
-
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical" >
+
+  <LinearLayout
+      xmlns:android="http://schemas.android.com/apk/res/android"
+      android:layout_weight="0"
+      android:layout_width="fill_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical" >
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <TextView
+         android:id="@+id/bearing_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/bearing_label" />
+
+      <TextView
+         android:id="@+id/bearing_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@+id/bearing_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content" >
+
+      <TextView
+         android:id="@+id/direction_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/direction_label" />
+
+      <TextView
+         android:id="@+id/direction_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@+id/direction_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/distance_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/distance_label" />
+
+      <TextView
+         android:id="@+id/distance_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@+id/distance_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/target_lat_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/target_latitude_label" />
+
+      <TextView
+         android:id="@+id/target_lat_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/target_lat_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/target_lon_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/target_longitude_label" />
+
+      <TextView
+         android:id="@+id/target_lon_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/target_lon_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/receiver_lat_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/receiver_latitude_label" />
+
+      <TextView
+         android:id="@+id/receiver_lat_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/receiver_lat_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/receiver_lon_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/receiver_longitude_label" />
+
+      <TextView
+         android:id="@+id/receiver_lon_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/receiver_lon_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/max_height_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/max_height_label" />
+
+      <TextView
+         android:id="@+id/max_height_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/max_height_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/max_speed_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/max_speed_label" />
+
+      <TextView
+         android:id="@+id/max_speed_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/max_speed_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+
+    <RelativeLayout
+       android:layout_gravity="fill"
+       android:layout_weight="1"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content">
+
+      <TextView
+         android:id="@+id/max_accel_label"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="@string/max_accel_label" />
+
+      <TextView
+         android:id="@+id/max_accel_value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentRight="true"
+         android:layout_below="@id/max_accel_label"
+         android:text=""
+         android:textAppearance="?android:attr/textAppearanceSmall" />
+    </RelativeLayout>
+  </LinearLayout>
 </LinearLayout>
index 267c90f..6cecbdf 100644 (file)
@@ -52,27 +52,14 @@ public class GoNoGoLights {
                missing = m;
                set = true;
                if (missing) {
-                       hide();
                        red.setImageDrawable(dGray);
                        green.setImageDrawable(dGray);
                } else if (state) {
                        red.setImageDrawable(dGray);
                        green.setImageDrawable(dGreen);
-                       show();
                } else {
                        red.setImageDrawable(dRed);
                        green.setImageDrawable(dGray);
-                       show();
                }
        }
-
-       public void show() {
-               red.setVisibility(View.VISIBLE);
-               green.setVisibility(View.VISIBLE);
-       }
-
-       public void hide() {
-               red.setVisibility(View.GONE);
-               green.setVisibility(View.GONE);
-       }
 }
index e0d49a1..a02ae3a 100644 (file)
@@ -22,11 +22,8 @@ import org.altusmetrum.altoslib_7.*;
 import android.app.Activity;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
+import android.view.*;
+import android.widget.*;
 import android.location.Location;
 
 public class TabFlight extends AltosDroidTab {
@@ -41,9 +38,11 @@ public class TabFlight extends AltosDroidTab {
        private TextView distance_view;
        private TextView latitude_view;
        private TextView longitude_view;
+       private View apogee_view;
        private TextView apogee_voltage_view;
        private TextView apogee_voltage_label;
        private GoNoGoLights apogee_lights;
+       private View main_view;
        private TextView main_voltage_view;
        private TextView main_voltage_label;
        private GoNoGoLights main_lights;
@@ -64,12 +63,14 @@ public class TabFlight extends AltosDroidTab {
                latitude_view  = (TextView) v.findViewById(R.id.lat_value);
                longitude_view = (TextView) v.findViewById(R.id.lon_value);
 
+               apogee_view = v.findViewById(R.id.apogee_view);
                apogee_voltage_view = (TextView) v.findViewById(R.id.apogee_voltage_value);
                apogee_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.apogee_redled),
                                                 (ImageView) v.findViewById(R.id.apogee_greenled),
                                                 getResources());
                apogee_voltage_label = (TextView) v.findViewById(R.id.apogee_voltage_label);
 
+               main_view = v.findViewById(R.id.main_view);
                main_voltage_view = (TextView) v.findViewById(R.id.main_voltage_value);
                main_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.main_redled),
                                               (ImageView) v.findViewById(R.id.main_greenled),
@@ -106,27 +107,19 @@ public class TabFlight extends AltosDroidTab {
                        }
 
                        if (state.apogee_voltage == AltosLib.MISSING) {
-                               apogee_voltage_view.setVisibility(View.GONE);
-                               apogee_voltage_label.setVisibility(View.GONE);
-                               apogee_lights.hide();
+                               apogee_view.setVisibility(View.GONE);
                        } else {
                                apogee_voltage_view.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
-                               apogee_voltage_view.setVisibility(View.VISIBLE);
-                               apogee_voltage_label.setVisibility(View.VISIBLE);
                                apogee_lights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING);
-                               apogee_lights.show();
+                               apogee_view.setVisibility(View.VISIBLE);
                        }
 
                        if (state.main_voltage == AltosLib.MISSING) {
-                               main_voltage_view.setVisibility(View.GONE);
-                               main_voltage_label.setVisibility(View.GONE);
-                               main_lights.hide();
+                               main_view.setVisibility(View.GONE);
                        } else {
                                main_voltage_view.setText(AltosDroid.number("%4.2f V", state.main_voltage));
-                               main_voltage_view.setVisibility(View.VISIBLE);
-                               main_voltage_label.setVisibility(View.VISIBLE);
                                main_lights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING);
-                               main_lights.show();
+                               main_view.setVisibility(View.VISIBLE);
                        }
                }
        }
index f620454..5ff9d12 100644 (file)
@@ -22,25 +22,25 @@ import org.altusmetrum.altoslib_7.*;
 import android.app.Activity;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
+import android.view.*;
+import android.widget.*;
 import android.location.Location;
 
 public class TabPad extends AltosDroidTab {
        private TextView battery_voltage_view;
        private GoNoGoLights battery_lights;
 
+       private TableRow receiver_row;
        private TextView receiver_voltage_view;
        private TextView receiver_voltage_label;
        private GoNoGoLights receiver_voltage_lights;
 
+       private TableRow apogee_row;
        private TextView apogee_voltage_view;
        private TextView apogee_voltage_label;
        private GoNoGoLights apogee_lights;
 
+       private TableRow main_row;
        private TextView main_voltage_view;
        private TextView main_voltage_label;
        private GoNoGoLights main_lights;
@@ -58,6 +58,7 @@ public class TabPad extends AltosDroidTab {
        private TextView receiver_longitude_view;
        private TextView receiver_altitude_view;
 
+       private TableRow[] ignite_row = new TableRow[4];
        private TextView[] ignite_voltage_view = new TextView[4];
        private TextView[] ignite_voltage_label = new TextView[4];
        private GoNoGoLights[] ignite_lights = new GoNoGoLights[4];
@@ -71,18 +72,21 @@ public class TabPad extends AltosDroidTab {
                                                  (ImageView) v.findViewById(R.id.battery_greenled),
                                                  getResources());
 
+               receiver_row = (TableRow) v.findViewById(R.id.receiver_row);
                receiver_voltage_view = (TextView) v.findViewById(R.id.receiver_voltage_value);
                receiver_voltage_label = (TextView) v.findViewById(R.id.receiver_voltage_label);
                receiver_voltage_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.receiver_redled),
                                                           (ImageView) v.findViewById(R.id.receiver_greenled),
                                                           getResources());
 
+               apogee_row = (TableRow) v.findViewById(R.id.apogee_row);
                apogee_voltage_view = (TextView) v.findViewById(R.id.apogee_voltage_value);
                apogee_voltage_label = (TextView) v.findViewById(R.id.apogee_voltage_label);
                apogee_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.apogee_redled),
                                                 (ImageView) v.findViewById(R.id.apogee_greenled),
                                                 getResources());
 
+               main_row = (TableRow) v.findViewById(R.id.main_row);
                main_voltage_view = (TextView) v.findViewById(R.id.main_voltage_value);
                main_voltage_label = (TextView) v.findViewById(R.id.main_voltage_label);
                main_lights = new GoNoGoLights((ImageView) v.findViewById(R.id.main_redled),
@@ -105,35 +109,40 @@ public class TabPad extends AltosDroidTab {
                                                   getResources());
 
                for (int i = 0; i < 4; i++) {
-                       int view_id, label_id, lights_id;
+                       int row_id, view_id, label_id, lights_id;
                        int red_id, green_id;
                        switch (i) {
                        case 0:
                        default:
+                               row_id = R.id.ignite_a_row;
                                view_id = R.id.ignite_a_voltage_value;
                                label_id = R.id.ignite_a_voltage_label;
                                red_id = R.id.ignite_a_redled;
                                green_id = R.id.ignite_a_greenled;
                                break;
                        case 1:
+                               row_id = R.id.ignite_b_row;
                                view_id = R.id.ignite_b_voltage_value;
                                label_id = R.id.ignite_b_voltage_label;
                                red_id = R.id.ignite_b_redled;
                                green_id = R.id.ignite_b_greenled;
                                break;
                        case 2:
+                               row_id = R.id.ignite_c_row;
                                view_id = R.id.ignite_c_voltage_value;
                                label_id = R.id.ignite_c_voltage_label;
                                red_id = R.id.ignite_c_redled;
                                green_id = R.id.ignite_c_greenled;
                                break;
                        case 3:
+                               row_id = R.id.ignite_d_row;
                                view_id = R.id.ignite_d_voltage_value;
                                label_id = R.id.ignite_d_voltage_label;
                                red_id = R.id.ignite_d_redled;
                                green_id = R.id.ignite_d_greenled;
                                break;
                        }
+                       ignite_row[i] = (TableRow) v.findViewById(row_id);
                        ignite_voltage_view[i] = (TextView) v.findViewById(view_id);
                        ignite_voltage_label[i] = (TextView) v.findViewById(label_id);
                        ignite_lights[i] = new GoNoGoLights((ImageView) v.findViewById(red_id),
@@ -154,21 +163,17 @@ public class TabPad extends AltosDroidTab {
                        battery_voltage_view.setText(AltosDroid.number(" %4.2f V", state.battery_voltage));
                        battery_lights.set(state.battery_voltage >= AltosLib.ao_battery_good, state.battery_voltage == AltosLib.MISSING);
                        if (state.apogee_voltage == AltosLib.MISSING) {
-                               apogee_voltage_view.setVisibility(View.GONE);
-                               apogee_voltage_label.setVisibility(View.GONE);
+                               apogee_row.setVisibility(View.GONE);
                        } else {
                                apogee_voltage_view.setText(AltosDroid.number(" %4.2f V", state.apogee_voltage));
-                               apogee_voltage_view.setVisibility(View.VISIBLE);
-                               apogee_voltage_label.setVisibility(View.VISIBLE);
+                               apogee_row.setVisibility(View.VISIBLE);
                        }
                        apogee_lights.set(state.apogee_voltage >= AltosLib.ao_igniter_good, state.apogee_voltage == AltosLib.MISSING);
                        if (state.main_voltage == AltosLib.MISSING) {
-                               main_voltage_view.setVisibility(View.GONE);
-                               main_voltage_label.setVisibility(View.GONE);
+                               main_row.setVisibility(View.GONE);
                        } else {
                                main_voltage_view.setText(AltosDroid.number(" %4.2f V", state.main_voltage));
-                               main_voltage_view.setVisibility(View.VISIBLE);
-                               main_voltage_label.setVisibility(View.VISIBLE);
+                               main_row.setVisibility(View.VISIBLE);
                        }
                        main_lights.set(state.main_voltage >= AltosLib.ao_igniter_good, state.main_voltage == AltosLib.MISSING);
 
@@ -177,12 +182,10 @@ public class TabPad extends AltosDroidTab {
                        for (int i = 0; i < 4; i++) {
                                double voltage = i >= num_igniter ? AltosLib.MISSING : state.ignitor_voltage[i];
                                if (voltage == AltosLib.MISSING) {
-                                       ignite_voltage_view[i].setVisibility(View.GONE);
-                                       ignite_voltage_label[i].setVisibility(View.GONE);
+                                       ignite_row[i].setVisibility(View.GONE);
                                } else {
                                        ignite_voltage_view[i].setText(AltosDroid.number(" %4.2f V", voltage));
-                                       ignite_voltage_view[i].setVisibility(View.VISIBLE);
-                                       ignite_voltage_label[i].setVisibility(View.VISIBLE);
+                                       ignite_row[i].setVisibility(View.VISIBLE);
                                }
                                ignite_lights[i].set(voltage >= AltosLib.ao_igniter_good, voltage == AltosLib.MISSING);
                        }
@@ -215,12 +218,10 @@ public class TabPad extends AltosDroidTab {
 
                if (telem_state != null) {
                        if (telem_state.receiver_battery == AltosLib.MISSING) {
-                               receiver_voltage_view.setVisibility(View.GONE);
-                               receiver_voltage_label.setVisibility(View.GONE);
+                               receiver_row.setVisibility(View.GONE);
                        } else {
                                receiver_voltage_view.setText(AltosDroid.number(" %4.2f V", telem_state.receiver_battery));
-                               receiver_voltage_view.setVisibility(View.VISIBLE);
-                               receiver_voltage_label.setVisibility(View.VISIBLE);
+                               receiver_row.setVisibility(View.VISIBLE);
                        }
                        receiver_voltage_lights.set(telem_state.receiver_battery >= AltosLib.ao_battery_good, telem_state.receiver_battery == AltosLib.MISSING);
                }