I’m developing a android app for our field staff here at work. I needed some tables for data output. First of all we need a XML layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textSample" android:layout_width="match_parent" android:layout_height="70dp" android:text="" android:gravity="center" android:textSize="20dp" android:textStyle="bold" /> <TableLayout android:id="@+id/tableSample" android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="0" > <TableRow android:id="@+id/tableHeader" > <TextView android:id="@+id/labelHeader1" style="@style/TableHeader" android:text="@string/label_header1" /> <TextView android:id="@+id/labelHeader2" style="@style/TableHeader" android:text="@string/label_header2" /> <TextView android:id="@+id/labelHeader3" style="@style/TableHeader" android:text="@string/label_header3" /> <TextView android:id="@+id/labelHeader4" style="@style/TableHeader" android:text="@string/label_header4" /> </TableRow> </TableLayout> </LinearLayout>
Then we need a layout for the dynamically added tablerows:
<?xml version="1.0" encoding="utf-8"?> <TableRow xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/textItem1" style="@style/TableItem" android:text="" /> <TextView android:id="@+id/textItem2" style="@style/TableItem" android:text="" /> <TextView android:id="@+id/textItem3" style="@style/TableItem" android:text="" /> <TextView android:id="@+id/textItem4" style="@style/TableItem" android:text="" /> </TableRow>
I placed the styles in the values/style.xml:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="TableHeader"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">30dp</item> <item name="android:layout_margin">1dp</item> <item name="android:gravity">center_vertical</item> <item name="android:padding">3dp</item> <item name="android:textSize">14dp</item> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/default_table_header_color</item> <item name="android:background">@color/default_table_header_background</item> </style> <style name="TableItem"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">25dp</item> <item name="android:layout_margin">1dp</item> <item name="android:gravity">right|center_vertical</item> <item name="android:padding">3dp</item> <item name="android:textSize">14dp</item> <item name="android:textColor">@color/default_table_item_color</item> <item name="android:background">@color/default_table_item_background</item> </style> </resources>
We can put these all together with some java code:
TableLayout table = (TableLayout)getActivity().findViewById(R.id.tableSample); while (some_data_still_come_in){ TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.tablerow, null); ((TextView)row.findViewById(R.id.textItem1)).setText("some text"); ((TextView)row.findViewById(R.id.textItem2)).setText("some text"); ((TextView)row.findViewById(R.id.textItem3)).setText("some text"); ((TextView)row.findViewById(R.id.textItem4)).setText("some text"); table.addView(row); get_next_data(); } table.requestLayout();
That’s all. Works fine and you get also a table feeling with this style.
Sehr übersichtliche und kurze Anleitung, hat mir doch glatt das Denken am frühen morgen ersparrt ;D