Reputation: 821
I am trying to inflate a layout which contains a few textViews. When I add that to a tableRow, the textViews inside that layout are getting overlapped. In another words, the layout_width and layout_height are being ignored I guess.
But when I add rowView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
after inflating, nothing is appearing.
TableRow tableRow = new TableRow(this);
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
tableRow.setLayoutParams(lp);
View rowView = getLayoutInflater().inflate(R.layout.layout_result_row, null);
rowView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
loadResultRow(rowView, result); //This method sets the text of the textViews
tableRow.addView(rowView);
tableLayout.addView(tableRow);
layout_result_row.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/results_row_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="16dp">
<TextView
android:id="@+id/results_row_match_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:text="TextView" />
<TextView
android:id="@+id/results_row_turn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/results_row_match_no"
android:layout_alignParentEnd="true"
android:text="TextView" />
<TextView
android:id="@+id/results_row_teams"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/results_row_match_no"
android:text="TextView" />
<TextView
android:id="@+id/results_row_turn_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/results_row_turn"
android:layout_toStartOf="@+id/results_row_turn"
android:text="TextView" />
<TextView
android:id="@+id/results_row_toss_ml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/results_row_match_no"
android:layout_marginTop="22dp"
android:text="TextView" />
<TextView
android:id="@+id/results_row_home_ml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/results_row_toss_ml"
android:layout_alignBottom="@+id/results_row_toss_ml"
android:layout_centerHorizontal="true"
android:text="TextView" />
<TextView
android:id="@+id/results_row_rank_ml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/results_row_home_ml"
android:layout_toEndOf="@+id/results_row_turn_text"
android:text="TextView" />
<TextView
android:id="@+id/results_row_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/results_row_turn_text"
android:layout_alignStart="@+id/results_row_home_ml"
android:text="TextView" />
</RelativeLayout>
Upvotes: 0
Views: 127
Reputation: 88
The inflated layout already has the Layout Params all the chid views are not redraw with the new Layout params. If you want to have the views same as before after you inflate you can use the below code.
TableLayout tableLayout = new TableLayout(getApplicationContext());
tableLayout.setBackgroundColor(Color.RED);
TableRow tableRow = new TableRow(this);
TableRow.LayoutParams lp = new
TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.WRAP_CONTENT);
tableRow.setLayoutParams(lp);
View rowView = getLayoutInflater().inflate(R.layout.activity_main, null);
tableLayout.setStretchAllColumns(true);
// rowView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
// loadResultRow(rowView, result); //This method sets the text of the textViews
tableRow.addView(rowView);
tableLayout.addView(tableRow);
setContentView(tableLayout);
Upvotes: 1
Reputation: 62189
Instead of:
TableRow.LayoutParams lp = new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
Try:
TableLayout.LayoutParams lp = new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
Upvotes: 0