2017-04-19 10 views
0

私はいくつかのtextViewを含むレイアウトを膨張しようとしています。これをtableRowに追加すると、レイアウト内のtextViewsが重なってしまいます。言い換えれば、layout_widthとlayout_heightは無視されているようです。膨らんだレイアウトの子は、それらをTableRowに追加するときに互いにオーバーラップします

しかし、膨張後にrowView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));を追加すると、何も表示されません。

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> 

答えて

1

膨張したレイアウトは、すでにすべてのCHIDのビューではないレイアウトのparamsを持っています新しいレイアウトで再描画するparams。膨張させた後、以前と同じように表示したい場合は、以下のコードを使用することができます。 enter image description here

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); 
+0

'tableLayout.setStretchAllColumns(true)'これがトリックです。どうもありがとう。 –

0

の代わりに:

TableRow.LayoutParams lp = new TableRow.LayoutParams(
        TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT); 

試してみてください。

TableLayout.LayoutParams lp = new TableLayout.LayoutParams(
      TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT); 
関連する問題