I am displaying integer data from an SQLite database using a SimpleCursorAdaptor. Everything shows up but the alignment is all wrong:
The dialog looks like this:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:id="@+id/lvwScores"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btnOK "
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="OK" android:layout_below="@id/lvwScores">
</Button>
</RelativeLayout>
With the row xml file:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0,1,2,3">
<TableRow >
<TextView android:id="@+id/tvwPlayer1Score" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"/>
<TextView android:id="@+id/tvwPlayer2Score" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"/>
<TextView android:id="@+id/tvwPlayer3Score" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"/>
<TextView android:id="@+id/tvwPlayer4Score" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"/>
</TableRow>
</TableLayout>
</RelativeLayout>
you should specify the
android:gravity
attribute:more about this: Android TextView
Update:
I've modified a bit the row.xml layout.
TextViews
' width tofill_parent
(they are stretched anyway, so it shouldn't do any harm), andTableRow
tagSo it looks like:
And the output looks right now:
Please let me know if this helped (still very embarrassed...)
TableLayout
is a bad choice. It's inherent fluidity will cause the columns to vary in width based on the content inside of them (although the stretching does minimize some of this), which you have no control over (see below). Also, the namespace declaration only needs to be on the root element of the XML, not each one ;)Simplify your row layout drastically by using this instead:
The combination of
layout_width="fill_parent"
andlayout_weight="1"
on each element tells the system to lay out all four elements, equally spaced (since they have the same weight sum) to fill the row. I almost always use nestedLinearLayout
in place ofTableLayout
whenever possible (that's allTableLayout
really is anyway).Another thing from the row XML you posted: it's not a good idea to set the root element of a list item's layout with
layout_height=fill_parent
like you have in theRelativeLayout
tag. Depending on where this layout get's drawn, the layout manager might actually listen to you and one row might end up taking the entire window!NOTE ABOUT TABLELAYOUT PARAMS:
If you insist on sticking with
TableLayout
, know that you can (and should) omit all thelayout_width
andlayout_height
attributes from every child ofTableLayout
andTableRow
. Those two widgets ignore what you say and set the values of their children to MATCH_PARENT and WRAP_CONTENT (respectively), so adding them to your code will only serve to confuse you if you think they're supposed to take effect.Hope that Helps!