I picked up Java earlier in the week, and I am currently at the last step of creating an app. I am trying to print data in a table created programmatically. The issue is, I can't seem to figure out how to add scrollview to this table. The table goes on for hungreds of rows, so I need scrollview in order to view it correctly. Everything I have tried crashes my app. The following is my create table function.
private void createTable ()
{
DecimalFormat format = new DecimalFormat ("##.00");
LinearLayout.LayoutParams linearContainerParams =
new LinearLayout.LayoutParams (
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0.0f);
LinearLayout.LayoutParams linearWidgetParams = new LinearLayout.LayoutParams (
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
1.0f);
TableLayout.LayoutParams tableContainerParams =
new TableLayout.LayoutParams (
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0.0f);
TableLayout.LayoutParams tableWidgetParams =
new TableLayout.LayoutParams (
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
1.0f);
TableRow.LayoutParams rowContainerParams =
new TableRow.LayoutParams (
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0.0f);
TableRow.LayoutParams rowWidgetParams =
new TableRow.LayoutParams (
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
1.0f);
mRoot = new LinearLayout (this);
mRoot.setOrientation (LinearLayout.VERTICAL);
mRoot.setBackgroundColor (Color.LTGRAY);
mRoot.setLayoutParams (linearContainerParams);
mTableLayout = new TableLayout (this);
mTableLayout.setOrientation (TableLayout.VERTICAL);
mTableLayout.setBackgroundColor (Color.BLUE);
mTableLayout.setLayoutParams (tableContainerParams);
mRoot.addView (mTableLayout);
mTableRow = new TableRow (this);
mTableRow.setOrientation (TableLayout.VERTICAL);
mTableRow.setBackgroundColor (Color.CYAN);
mTableRow.setLayoutParams (rowContainerParams);
mTableLayout.addView (mTableRow);
mTextView = new TextView (this);
mTextView.setText ("Total");
mTextView.setTextColor (Color.RED);
mTextView.setGravity (Gravity.RIGHT);
mTextView.setLayoutParams (rowWidgetParams);
mTableRow.addView (mTextView);
mTextView = new TextView (this);
mTextView.setText ("Month");
mTextView.setTextColor (Color.RED);
mTextView.setGravity (Gravity.RIGHT);
mTextView.setLayoutParams (rowWidgetParams);
mTableRow.addView (mTextView);
int i = 0;
for (i = 0; i < mTotalPaymentCount; ++i)
{
TextView text = new TextView (this);
text.setText ("" + (i + 1));
row.addView (text);
text.setTextColor (Color.RED);
text.setGravity (Gravity.RIGHT);
text.setLayoutParams (rowWidgetParams);
mTableLayout.addView (row);
}
setContentView (mRoot);
}
Is there any possible way for me to get scrollview working at all? Thank you to any help.
I think @FD_'s answer is right, however, if you still want to do it the way you proposed, the right way to do it is creating a ScrollView
object and then adding the TableLayout
via its addView()
method.
ScrollView sv = new ScrollView(this);
sv.addView(yourTableLayout);